Ich habe eine Version der Phil Antwort mit pdfbox-2.0.1 hinzugefügt
%Vor%Ich habe ein PDF, aus dem ich eine Seite mit PDFBox extrahiert habe:
%Vor%Dies ergibt das folgende Ergebnis, das wie etwas aussieht, das Sie erwarten würden, basierend auf dem PDF-Spezifikation .
%Vor%Was ich suche ist, die PDF TextObjects (wie in Par 5.3 der PDF Spezifikation beschrieben) auf der Seite als Java Objekte zu extrahieren, also im Grunde die Stücke zwischen BT und ET (zwei von 'en auf dieser Seite) . Sie sollten mindestens alles zwischen den Klammern enthalten, die 'Tj' als String vorausgehen, und eine x- und y-Koordinate basierend auf dem 'Tm' (oder einem 'Td'-Operator, etc.). Andere Attribute wären ein Bonus, sind aber nicht erforderlich.
Der PDFTextStripper scheint mir entweder jedes Zeichen mit Attributen als TextPosition (zu viel Rauschen für meinen Zweck) oder den ganzen Text als einen langen String zu geben.
Verfügt PDFBox über eine Funktion, die eine Seite analysiert und TextObjects wie dieses zur Verfügung stellt, die ich verpasst habe? Oder, wenn ich PDFBox erweitern soll, um zu bekommen, was ich brauche, wo soll ich anfangen? Jede Hilfe ist willkommen.
BEARBEITEN : Eine weitere Frage gefunden hier
Danke,
Phil
Gestützt auf die verlinkte Frage und den Hinweis von mkl gestern (danke!), habe ich beschlossen, etwas aufzubauen die Token analysieren. Zu beachten ist, dass die Attribute in einem PDF-Textobjekt dem Operator vorangehen. Daher sammle ich alle Attribute in einer Sammlung, bis ich auf den Operator stoße. Wenn ich dann weiß, zu welchem Operator die Attribute gehören, verschiebe ich sie an ihre richtigen Positionen. Das ist, was ich mir ausgedacht habe:
%Vor%In Kombination mit:
%Vor%Es gibt die Ausgabe:
%Vor%Während es den Trick macht, bin ich sicher, dass ich einige Konventionen gebrochen habe und nicht immer den elegantesten Code geschrieben habe. Verbesserungen und alternative Lösungen sind willkommen.
Ich habe eine Version der Phil Antwort mit pdfbox-2.0.1 hinzugefügt
%Vor%