Frage

Wir erhalten eine große Menge von Daten unserer Kunden in PDF-Dateien in unterschiedlichen Formaten [Layout-weise], werden diese Dateien in der Regel Ausgabe berichten, und in der Regel richtig kommentieren sind [sie in der Regel nicht brauchen OCR], aber nicht formatiert gut genug, dass einfach aus Akrobat mehrere hundert Seiten Text zu kopieren ist nicht zur Arbeit gehen.

Der beste Ansatz, den ich bisher gefunden habe ist es, ein Skript zu schreiben, die fast gültige XML-Ausgabe zu analysieren (die Kommentare sind ungültig und viele Zeichen sind in unterschiedlicher Weise entkam, é wird [[[e9]]] é, $ wird \ $, wird% \% ...) die Befehlszeile pdftoipe Dienstprogramm (pdf-Dateien für ein Programm namens zu konvertieren ipe ), die mich auf jeder Seite Textelemente mit ihren Positionen gibt [siehe Beispiel unten], die für die Berichte gut genug funktioniert, wo die gleichen Werte auf jeder Seite an der gleichen Stelle sind mir egal etwa, würde aber für den Import von Matrix [Kreuztabelle] pDF-Dateien zusätzlichen Scripting-Aufwand erfordern. pdftoipe ist gar nicht für diese bestimmt sind, und im besten Fall kann manuell Cygwin für Windows kompiliert werden.

Gibt es Bibliotheken, die diese einfach von einem Skriptsprache mache ich ertragen kann? Ein grafisches Tool wäre auch super. Und ein Pony.

pdftoipe Ausgabe von dieser Probe sieht wie folgt aus:

<ipe creator="pdftoipe 2006/10/09"><info media="0 0 612 792"/>
<-- Page: 1 1 -->
<page gridsize="8">
<path fill="1 1 1" fillrule="wind">
64.8 144 m
486 144 l
486 727.2 l
64.8 727.2 l
64.8 144 l
h
</path>
<path fill="1 1 1" fillrule="wind">
64.8 144 m
486 144 l
486 727.2 l
64.8 727.2 l
64.8 144 l
h
</path>
<path fill="1 1 1" fillrule="wind">
64.8 144 m
486 144 l
486 727.2 l
64.8 727.2 l
64.8 144 l
h
</path>
<text stroke="1 0 0" pos="0 0" size="18" transformable="yes" matrix="1 0 0 1 181.8 707.88">This is a sample PDF fil</text>
<text stroke="1 0 0" pos="0 0" size="18" transformable="yes" matrix="1 0 0 1 356.28 707.88">e.</text>
<text stroke="1 0 0" pos="0 0" size="18" transformable="yes" matrix="1 0 0 1 368.76 707.88"> </text>
<text stroke="0 0 0" pos="0 0" size="12.6" transformable="yes" matrix="1 0 0 1 67.32 692.4"> </text>
<text stroke="0 0 0" pos="0 0" size="12.6" transformable="yes" matrix="1 0 0 1 67.32 677.88"> </text>
<text stroke="0 0 0" pos="0 0" size="12.6" transformable="yes" matrix="1 0 0 1 67.32 663.36"> </text>
<text stroke="0 0 0" pos="0 0" size="12.6" transformable="yes" matrix="1 0 0 1 67.32 648.84"> </text>
<text stroke="0 0 0" pos="0 0" size="12.6" transformable="yes" matrix="1 0 0 1 67.32 634.32"> </text>
<text stroke="0 0 0" pos="0 0" size="12.6" transformable="yes" matrix="1 0 0 1 67.32 619.8"> </text>
<text stroke="0 0 0" pos="0 0" size="12.6" transformable="yes" matrix="1 0 0 1 67.32 605.28"> </text>
<text stroke="0 0 0" pos="0 0" size="12.6" transformable="yes" matrix="1 0 0 1 67.32 590.76"> </text>
<text stroke="0 0 0" pos="0 0" size="12.6" transformable="yes" matrix="1 0 0 1 67.32 576.24"> </text>
<text stroke="0 0 0" pos="0 0" size="12.6" transformable="yes" matrix="1 0 0 1 67.32 561.72"> </text>
<text stroke="0 0 0" pos="0 0" size="12.6" transformable="yes" matrix="1 0 0 1 67.32 547.2"> </text>
<text stroke="0 0 0" pos="0 0" size="12.6" transformable="yes" matrix="1 0 0 1 67.32 532.68"> </text>
<text stroke="0 0 0" pos="0 0" size="12.6" transformable="yes" matrix="1 0 0 1 67.32 518.16"> </text>
<text stroke="0 0 0" pos="0 0" size="12.6" transformable="yes" matrix="1 0 0 1 67.32 503.64"> </text>
<text stroke="0 0 0" pos="0 0" size="12.6" transformable="yes" matrix="1 0 0 1 67.32 489.12"> </text>
<text stroke="0 0 0" pos="0 0" size="12.6" transformable="yes" matrix="1 0 0 1 67.32 474.6"> </text>
<text stroke="0 0 1" pos="0 0" size="16.2" transformable="yes" matrix="1 0 0 1 67.32 456.24">If you can read this</text>
<text stroke="0 0 1" pos="0 0" size="16.2" transformable="yes" matrix="1 0 0 1 214.92 456.24">,</text>
<text stroke="0 0 1" pos="0 0" size="16.2" transformable="yes" matrix="1 0 0 1 219.48 456.24"> you already have A</text>
<text stroke="0 0 1" pos="0 0" size="16.2" transformable="yes" matrix="1 0 0 1 370.8 456.24">dobe Acrobat </text>
<text stroke="0 0 1" pos="0 0" size="16.2" transformable="yes" matrix="1 0 0 1 67.32 437.64">Reader i</text>
<text stroke="0 0 1" pos="0 0" size="16.2" transformable="yes" matrix="1 0 0 1 131.28 437.64">n</text>
<text stroke="0 0 1" pos="0 0" size="16.2" transformable="yes" matrix="1 0 0 1 141.12 437.64">stalled on your computer.</text>
<text stroke="0 0 0" pos="0 0" size="16.2" transformable="yes" matrix="1 0 0 1 337.92 437.64"> </text>
<text stroke="0 0.502 0" pos="0 0" size="12.6" transformable="yes" matrix="1 0 0 1 342.48 437.64"> </text>
<image width="800" height="600" rect="-92.04 800.64 374.4 449.76" ColorSpace="DeviceRGB" BitsPerComponent="8" Filter="DCTDecode" length="369925">
feedcafebabe...
</image>
</page>
</ipe>
War es hilfreich?

Lösung

Wir verwenden Xpdf in einem unserer Anwendungen. Es ist ein C ++ Bibliothek, die für PDF-Rendering in erster Linie verwendet wird, obwohl es einen Textextraktor hat, die für dieses Projekt nützlich sein könnte.

Andere Tipps

Wenn Sie gut mit Aufruf etwas Äußerliches, können Sie ghost - Blick auf die ps2ascii Skript mit der Distribution enthalten. Ich bin nicht sicher, was Sie von einem grafischen Tool wollen - eine große Taste, die Sie drücken Sie die Ein- und Ausgabedateien zu wählen? Eine Vorschau? Sie könnten in der Lage sein GSView zu verwenden, je nachdem, was Sie wollen.

pdftohtml -xml

obwohl pdftoipe scheint detaillierteren !!

Haben Sie sich Aspose? Wir verwenden es für eine ASP.net app und ich habe einige Beispiele für vbscript, sie als gut zu sehen. Es ist nicht besonders teuer auch nicht.

http://www.aspose.com/

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top