2016-08-16 3 views
0

Ich verwende PDFBox, um Text aus meinem PDF-Dokument zu extrahieren. Es ruft den Text ab, aber nicht den ganzen Text (insbesondere scheint es so, als würden Titel-/Kopf- und Fußzeilentexte fehlen). Die fehlenden Teile sind keine Bilder und werden extrahiert, wenn die Textansicht im Foxit-Reader verwendet wird.PDFBox getText gibt nicht den gesamten sichtbaren Text zurück

Ich verwende Version 1.8.12 und machte einen Testfall mit 2.0.2, nur um zu sehen, ob es mehr Inhalt zurückgeben würde.

Dies ist der Code, den ich für 2.0.2 verwendet:

public static void main(String[] args) { 

    File file = new File("D:\\\\file.pdf"); 
    try { 
     PDDocument doc = PDDocument.load(file); 
     PDFTextStripper stripper = new PDFTextStripper(); 
     //stripper.setSuppressDuplicateOverlappingText(false); 
     stripper.getText(doc); 
    } catch (Exception e) { 
     System.out.println("Exc errirs "); 
    } 
} 

Jetzt frage ich mich, gibt es irgendwelche Einstellungen, die ich verpasst? Ist PDFBox fehlerhaft, weil sich Text über einigen dekorativen Elementen befindet (Rechteck unter Text)?

Dank

EDIT: link to file in question

+2

Bitte teilen Sie ein PDF, mit dem man das Problem reproduzieren kann. – mkl

+0

Link in der Frage hinzugefügt –

+1

Und welcher Text fehlt? Auf Seite 1 schreibt die erste "Windows Phone" -Zeile mit dem führenden Symbol nicht, sondern Vektorgrafiken. Die restlichen Zeilen "Windows Phone:" und "Empowering Business" werden von PDFBox extrahiert. Sie erscheinen wahrscheinlich nicht dort, wo Sie sie erwarten, aber sie sind dort. – mkl

Antwort

1

Wie in den Kommentaren diskutiert wurde der Text nicht fehlen, aber an der "falschen" Position. Standardmäßig extrahiert die PDFBox-Textextraktion die Zeichen so, wie sie im Content-Stream vorkommen, aber sie kommen nicht immer auf "natürliche" Weise. PDF-Dateien werden von Software erstellt, nicht von Menschen.

Eine Alternative ist, die Sortieroption zu verwenden:

stripper.setSortByPosition(true) 

jedoch als mkl darauf hingewiesen, wenn der Text in zwei Spalten ist, werden Sie das Ergebnis auch nicht mögen.

Verwandte Themen