Lesen einer Tabelle oder Zelle mit Wert in einer pdf-Datei mit java?
Ich durchgemacht habe Java und PDF-Foren zu extrahieren, die einen text-Wert aus der Tabelle in einer pdf-Datei, aber konnte Sie nicht finden keine Lösung, außer JPedal (Es ist nicht opensource und lizenziert).
So, ich würde gerne wissen, jede opensource API ' s wie pdfbox, itext, um das gleiche Ergebnis zu erzielen wie JPedal.
Ref. Beispiel:
- Ich erinnere mich, mit einer kostenlosen Bibliothek mit dem Namen iText vor vielen Monden... itextpdf.com
- iText lizensiert als open source zu. Siehe Ist iText-Java-Bibliothek, die kostenlos oder irgendwelche Gebühren zu zahlen? für mehr info. Nachdem dies gesagt ist, müssen Sie die Antwort auf diese Gegenfrage, bevor jemand Ihnen helfen kann: ist das PDF ein Tagged PDF ist oder nicht? Wenn nicht, es gibt keine Tabelle in der PDF-Datei. Uhr dieses video um mehr zu erfahren über die Struktur. Wo Ihre menschlichen Augen können sehen, ein Tisch, eine Maschine kann nur sehen, Linien und Zeichen, ohne irgendeine Struktur.
- Wie Sie den text mit dem Wert aus der Tabelle in einer pdf-Datei?
- Indem wir die X-und Y-Koordinaten, auf diese Weise JPedal implementiert die Logik.
- Das ist möglich für andere auch.
Du musst angemeldet sein, um einen Kommentar abzugeben.
In den Kommentaren der OP erklärte, dass er sucht den text-Wert aus der Tabelle in einer pdf-Datei er will-Extrakt
So, während die Frage zunächst Klang wie eine generische Extraktion von tabellarischen Daten aus PDF-Dateien (die schwierig sein kann, zumindest), es ist eigentlich im wesentlichen über die Extraktion von text aus einem rechteckigen Bereich auf einer Seite gegeben, die durch Koordinaten.
Dies ist möglich mit einer der beiden Bibliotheken, die Sie erwähnt (und sicherlich andere auch).
iText
Beschränken, die region, aus der Sie wollen, um text zu extrahieren, können Sie die
RegionTextRenderFilter
imFilteredTextRenderListener
, z.B.:Beachten Sie aber, iText extrahiert text basiert auf den grundlegenden text-chunks, die in den content-stream, basiert nicht auf jede einzelne Glyphe in einem solchen Stück. So das ganze Stück verarbeitet wird, wenn nur der kleinste Teil davon ist in der Gegend.
Dies kann oder kann nicht zu Ihnen passen.
Wenn Sie laufen in das problem, das mehr gewonnen wird, als Sie wollten, Sie sollten, teilen Sie die Stücke in Ihrer konstituierenden Glyphen vorher. Diese stackoverflow-Antwort erklärt, wie das zu tun.
PDFBox
Beschränken, die region, aus der Sie wollen, um text zu extrahieren, können Sie die
PDFTextStripperByArea
, z.B.:LocationTextExtractionStrategy
versucht, reflektieren die horizontale layout der PDF-Datei durch einfügen von Leerzeichen, wo nötig. Gleichwertige Techniken sollte möglich sein, für PDFBox.Versuchen PDFTextStream. Zumindest bin ich in der Lage zu identifizieren, die die Werte in der Spalte. Früher war ich mit iText und stecken in der Definition von Strategie. Es schwer ist.
Diese api trennt Spalte Zellen, indem Sie mehr Räume. Seine Feste. Sie können mit Logik. (diese fehlten in iText).
Frage gestellt wurde im Zusammenhang mit diesem auf stackoverflow!