tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
4
ZUGRIFFE
3432
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    karl_h karl_h ist offline Grünschnabel
    Registriert seit
    Jan 2009
    Beiträge
    2
    Hallo!

    Ich habe ein kleines Problem, ich benutze folgenden Code, um ein PDF einzulesen und dieses seitenweise nach dem Tag <Seitenumbruch> zu durchsuchen.

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    
     
    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
     

  2. #2
    pizza1234 pizza1234 ist offline Mitglied Gold
    Registriert seit
    Jan 2007
    Beiträge
    177
    Hallo,
    laut Errorlog fehlt anscheinend eine Library.

    Im PDFBox -Ordner ../external liegt eine "FontBox..jar", die muss mit in den BuildPath.
    Dann sollte es funktionieren.

    Grüße,
    Peter
     

  3. #3
    Avatar von Billie
    Billie Billie ist offline Mitglied Platin
    Registriert seit
    Jan 2003
    Ort
    Arzl im Pitztal (Tirol)
    Beiträge
    510
    Also diese Exception bedeutet, dass er die Klasse "org.fontbox.afm.FontMetric" nicht im Klassenpfad finden konnte.

    Hat PDFBox irgendwelche abhängigkeiten zu anderen Libraries od. hast du nicht alle JARs im Klassenpfad?
     
    Fann Ég Fjalli Fallega Steina
    Faldi Dá Alla Vildi Deim Leyna
    Huldi Dar Hellisskúta Heillasteina
    Alla Mína Una eth slegu Óskasteina

  4. #4
    karl_h karl_h ist offline Grünschnabel
    Registriert seit
    Jan 2009
    Beiträge
    2
    Hallo!

    Vielen Dank für die flotte Hilfe. Inzwischen haben ich die Libs für fontbox hinzugefügt. Ich bin jedoch etwas irritiert, dass es ohne fontbox-Lib mit wenigen Seiten klappt, hat aber mit vielen nicht?

    Grüße
    karl_h
     

  5. #5
    Avatar von Billie
    Billie Billie ist offline Mitglied Platin
    Registriert seit
    Jan 2003
    Ort
    Arzl im Pitztal (Tirol)
    Beiträge
    510
    Keine Ahnung wozu die Fontbox genau verwendet wird, ich könnte mir vorstellen, dass sie zur Unterstützung von speziellen Schriftarten herangezogen wird.

    Je nachdem ob jetzt im PDF diese "speziellen" Schriftarten verwendet werden, wird die Library angesprochen od. nicht.
     
    Fann Ég Fjalli Fallega Steina
    Faldi Dá Alla Vildi Deim Leyna
    Huldi Dar Hellisskúta Heillasteina
    Alla Mína Una eth slegu Óskasteina

Ähnliche Themen

  1. PDF Textbearbeiten mit PDFBox
    Von Travalon im Forum Java
    Antworten: 2
    Letzter Beitrag: 01.09.09, 11:28
  2. Problem mit Eclipse + PDFbox
    Von Tobias Köhler im Forum Java
    Antworten: 2
    Letzter Beitrag: 22.11.07, 07:53
  3. PDFBox: Alle Inhalte aus Seite auslesen
    Von Der Held im Forum Java
    Antworten: 0
    Letzter Beitrag: 07.10.06, 13:36
  4. Antworten: 2
    Letzter Beitrag: 21.09.06, 20:35
  5. schlüsselwort frage
    Von can im Forum VisualStudio & MFC
    Antworten: 2
    Letzter Beitrag: 10.07.04, 09:20

Stichworte