Hallo!
Ich habe ein kleines Problem, ich benutze folgenden Code, um ein PDF einzulesen und dieses seitenweise nach dem Tag <Seitenumbruch> zu durchsuchen.
Das funktioniert soweit bestens, nur wenn das Dokument zu groß (mehr als 13 Seiten) ist, bricht es ab.
Als Fehler bekomme ich folgendes angezeigt:
Hat jemand eine Idee woran das liegen könnte? Stöß die "List" an die Grenze (Größe)?
Vielen Dank schonmal.
Viele Grüße
karl_h
Ich habe ein kleines Problem, ich benutze folgenden Code, um ein PDF einzulesen und dieses seitenweise nach dem Tag <Seitenumbruch> zu durchsuchen.
Code:
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.List;
import org.pdfbox.pdfparser.PDFParser;
import org.pdfbox.pdmodel.PDPage;
import org.pdfbox.pdmodel.PDDocument;
import org.pdfbox.util.PDFTextStripper;
import org.pdfbox.util.Splitter;
import org.pdfbox.pdfwriter.COSWriter;
import java.io.InputStream;
import java.io.FileOutputStream;
import org.pdfbox.exceptions.InvalidPasswordException;
import org.pdfbox.exceptions.COSVisitorException;
public class test {
public static void main(String args[])
{
List documents = null;
Splitter splitter = new Splitter();
PDFParser parser;
try {
PDFTextStripper stripper = new PDFTextStripper();
parser = new PDFParser(new FileInputStream(new File(
"c:/Test.pdf" )));
parser.parse();
PDDocument doc = parser.getPDDocument();
System.out.println("Gesamtanzahl an Seiten: "+doc.getNumberOfPages());
splitter.setSplitAtPage(1);
documents = splitter.split(doc);
System.out.println("Aufgeteilt in "+documents.size()+" Teile.");
for (int i = 0; i < documents.size(); i++)
{
PDDocument doc2 = (PDDocument) documents.get(i);
String textContent = stripper.getText(doc2);
if(textContent.indexOf("<Seitenumbruch>")!=-1)
{
System.out.println("Ein Zeilenumbruch befindet sich auf Seite "+(i+1));
}
}
} catch (FileNotFoundException e){
System.out.println("File not found!");
} catch (IOException e) {
System.out.println("Error!");
}
}
}
Das funktioniert soweit bestens, nur wenn das Dokument zu groß (mehr als 13 Seiten) ist, bricht es ab.
Als Fehler bekomme ich folgendes angezeigt:
Gesamtanzahl an Seiten: 28
Aufgeteilt in 28 Teile.
Ein Zeilenumbruch befindet sich auf Seite 4
Ein Zeilenumbruch befindet sich auf Seite 8
Ein Zeilenumbruch befindet sich auf Seite 13
Exception in thread "main" java.lang.NoClassDefFoundError: org/fontbox/afm/FontMetric
at org.pdfbox.pdmodel.font.PDFont.getAFM(PDFont.java:334)
at org.pdfbox.pdmodel.font.PDSimpleFont.getFontHeight(PDSimpleFont.java:104)
at org.pdfbox.util.PDFStreamEngine.showString(PDFStreamEngine.java:336)
at org.pdfbox.util.operator.ShowTextGlyph.process(ShowTextGlyph.java:80)
at org.pdfbox.util.PDFStreamEngine.processOperator(PDFStreamEngine.java:452)
at org.pdfbox.util.PDFStreamEngine.processSubStream(PDFStreamEngine.java:215)
at org.pdfbox.util.PDFStreamEngine.processStream(PDFStreamEngine.java:174)
at org.pdfbox.util.PDFTextStripper.processPage(PDFTextStripper.java:336)
at org.pdfbox.util.PDFTextStripper.processPages(PDFTextStripper.java:259)
at org.pdfbox.util.PDFTextStripper.writeText(PDFTextStripper.java:216)
at org.pdfbox.util.PDFTextStripper.getText(PDFTextStripper.java:149)
at de.datax.ag.pdf.splitter.test.main(test.java:51)
Caused by: java.lang.ClassNotFoundException: org.fontbox.afm.FontMetric
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
... 12 more
Hat jemand eine Idee woran das liegen könnte? Stöß die "List" an die Grenze (Größe)?
Vielen Dank schonmal.
Viele Grüße
karl_h