Konvertieren einer PDF -Datei in eine schöne Tabelle
-
28-10-2019 - |
Frage
Ich habe diese PDF -Datei, die in 5 Spalten angeordnet ist.
Ich habe den Stapelüberlauf durchgesehen und durchgesehen (und verrückt gegoogelt) und habe alle Lösungen ausprobiert (einschließlich des letzten Auswegs von Adobe Acrobat selbst).
Aus irgendeinem Grund kann ich diese 5 Spalten im CSV/XLS -Format jedoch nicht erhalten - da ich sie angeordnet bin. Normalerweise ist das Format, wenn ich sie exportiere, schrecklich und alle Einträge werden mit einem gewissen Datenverlust eine Linie angeordnet.
http://www.2shared.com/document/page4a1t/ex1.html
Hier ist ein Link zu einem Auszug der obigen Datei, aber ich bin wirklich frustriert und habe keine Optionen mehr.
Lösung
ITEXT (oder ITEXTSHARP) könnte dies tun, wenn Sie ihm die Grenzen dieser 5 Spalten geben können und bereit sind, sich mit einem Overhead zu befassen (nämlich den Text der Seite für jede Spalte neu zu verärgern)
Rectangle2D columnBoxArray[] = buildColumnBoxes();
ArrayList<String> columnTexts = new ArrayList<String>(columnBoxArray.length);
For (Rectangle2D columnBBox : columnBoxArray) {
FilteredTextRenderListener textInRectStrategy =
new FilteredTextRenderListener(new LocationTextExtractionStrategy(),
new RegionTextRenderFilter( columnBBox ) );
columnTexts.add(PdfTextExtractor.extractText( reader, pageNum, textInRectStrategy));
}
Jede Textzeile sollte durch getrennt werden \n
, Es wird also eine einfache Angelegenheit der Saite analysiert.
Wenn Sie die gesamte Seite für jede Spalte nicht reparieren möchten, können Sie wahrscheinlich eine benutzerdefinierte Implementierung von erstellen FilteredTextRenderListener
Das würde mehrere Hörer-/Filterpaare benötigen. Sie könnten dann das Ganze einmal anstatt für jede Spalte einmal analysieren.