Gibt es eine Visual Studio-PDF-Bibliothek, mit der Sie Einzüge in einer PDF-Datei lesen können?

Ich arbeite an einem Programm, das versucht, Daten in einer PDF-Datei zu analysieren. Das Problem ist, dass wir einen bestimmten Abschnitt des PDF analysieren müssen, der in einer dreistufigen Hierarchie formatiert ist: Überschrift, Unterüberschrift, Absatz. Bisher verwenden wir Zeilenumbrüche (\n), um zu versuchen, die Daten zu parsen, aber das ist weitgehend ineffizient. Selbst wenn wir alle möglichen Werte für die Überschriften und Unterüberschriften hätten, wäre die Lösung immer noch nicht ideal, da neue PDFs mit neuen Werten für Überschriften und Unterüberschriften erstellt werden könnten.

Die PDFs werden jedoch so erstellt, dass die Überschrift am nächsten am linken Rand steht, wobei die Zwischenüberschrift weiter entfernt und der Einzug am Absatz noch größer ist. Wir möchten die Einrückungen verwenden können, um die Zeilen zu identifizieren, die wir analysieren möchten. Gibt es eine PDF-Bibliothek für Visual Studio, die das kann? Ich codiere in C#.

Antworten (2)

PDF-Dateien dienen der Anzeige von Inhalten und nicht der organisierten Speicherung von Inhalten. PDF-Dateien enthalten keine Überschriften, Unterüberschriften oder Absätze. Was Sie auf der PDF-Seite als Überschriften oder Absätze sehen, ist in der PDF-Datei dasselbe, etwas Text, der an festen Positionen mit unterschiedlichen Schriftarten geschrieben ist, sodass Sie visuell Überschriften oder Absätze haben.
Die angezeigten Einzüge existieren nicht als spezifische Objekte in der PDF-Datei. Die Einrückungen werden erreicht, indem die Überschrift eine X-Koordinate, die Unterüberschrift bei X + 50 und der Absatzinhalt bei X + 100 geschrieben wird (50 und 100 sind nur Dummy-Beispiele).
Was Sie tun müssen, ist, die Textfragmente zu extrahieren, um auch die Textposition einzuschließen. Sie organisieren die Textfragmente in Zeilen basierend auf der Y-Position von Textfragmenten (Textfragmente mit demselben Y befinden sich in derselben Zeile). Die Textfragmente werden basierend auf ihrer zunehmenden X-Position zur Zeile hinzugefügt. Sobald Sie die Zeilen haben, überprüfen Sie die X-Position jeder Zeile (die X-Position des ersten Textfragments in der Zeile). Das kleinste X steht für eine Überschrift, das nächste X für eine Unterüberschrift und das nächste X für einen Absatz.
Das Unternehmen, für das ich arbeite, entwickelt die XFINIUM.PDF- Bibliothek, die Ihnen bei der Textextraktion helfen kann. Sie müssen die obige Logik auf die extrahierten Textfragmente implementieren.

Ich würde vorschlagen, dass Sie sich iTextSharp ansehen . Ich habe die Java-Version verwendet, um PDF-Dateien zu erstellen, zu aktualisieren und zu überprüfen. Das Beste ist, dass es von StackExchange vollständig unterstützt wird.