Laden...

PDF als Text speichern

Letzter Beitrag vor 11 Tagen 7 Posts 263 Views
PDF als Text speichern

Ich möchte eigentlich etwas recht triviales - finde aber keine Lösung:

Ich muss aus C# heraus eine PDF-Datei in eine Text-Datei konvertieren. Es soll eigentlich die gleiche Funktion sein, die im Dialog im ACROBAT-Reader als "Speichern unter..." zur Verfügung steht.

Der Acrobat-Reader ist natürlich vorhanden. Wie komme ich an diese Funktion heran, ohne umfangreiche Zusatzbibliotheken zu installieren?

Ich habe ein ACROBAT-Credential, aber ich finde kein Beispiel, wie ich es damit lösen kann. Auch die freie Bibliothek iText 7 ermöglicht das ggf., aber ich bekomme es nicht hin. 
Einige Lösungen, die ich bisher fand (z.B. https://stackoverflow.com/questions/42761048/c-sharp-convert-pdf-to-txt)) funktionieren nicht.

Wichtig wäre dabei auch, dass die Ausgabedatei die gleiche Struktur hat, die ACROBAT erzeugt.

Hat de jemand ggf. eine Lösung?

Vielen Dank schonmal.

Wichtig wäre dabei auch, dass die Ausgabedatei die gleiche Struktur hat, die ACROBAT erzeugt.

Das ist quasi ausgeschlossen - oder reiner Zufall; ausser, wenn Du die Anwendung Acrobat selbst automatisierst oder eben die kostenpflichtige PDF Service API von Adobe verwendest.


PDF ist kein offenes Dateiformat und quasi jede andere Implementierung basiert auf Reverse Engineering und damit ggfls. unterschiedlichen Ergebnissen. Und weil es ein geschlossenes aber leider sehr beliebtes Dateiformat ist, sind kostenfreie / offene Bibliotheken für den kommerziellen Zweck in allen Programmiersprachen Mangelware (beachte auch dazu die Lizenz von iText 7).

Willst Du qualitativ gutes PDF Handling, dann wirst Du leider - das zeigt die Erfahrung - um kostenpflichtige Bibliotheken nicht drum herum kommen.

Vielen Dank erstmal für die Antwort.
Wie  kann ich Acrobat "automatisieren". Ich würde ja eigentlich nur "Öffnen", "Speichern unter..." und "Schließen" benötigen.

Ich habe das versucht, indem ich die Acrobat-Bibliothek eingebunden habe (Interop.Acrobat.dll).

Das geht erstmal, die Objekte gibt es auch - aber dann tut sich einfach nichts. Fehlermeldungen gibt es auch nicht.

Wie  kann ich Acrobat "automatisieren". Ich würde ja eigentlich nur "Öffnen", "Speichern unter..." und "Schließen" benötigen.

Jedes UI Control hat nen eigenes Handle; das Window, nen Button... musst Dir also die Handles besorgen und dann die Handles steuern. Und ja, dafür gibts keine fertige Anleitung.

Mit FindWindowExA kannst Dir das erste Handle holen; und dann musst durch die Child Handles iterieren.
Aber Du kannst Dir anschauen, wie andere das machen: https://www.google.com/search?q=.net+windows+window+handles


Kann jedoch jederzeit sein, dass Du das mit jeder Acrobat-Aktualisierung anpassen musst.

Vielen Dank für Deine Zeit und die Hilfe.

Die Acrobat-dll funktioniert jetzt sogar. Aber es gibt nur "Save" kein "Save As". Leider! Und eine brauchbare Doku dazu gibt es natürlch auch nicht.

Dann bleibt wohl wirklich nur der von Dir vorgeschlagene Weg. Ich werde es versuchen...

Zitat von visionmaster

Dann bleibt wohl wirklich nur der von Dir vorgeschlagene Weg. Ich werde es versuchen...

Dann kannst du dir auch mal AutoIt anschauen.

Zitat von visionmaster

Ich muss aus C# heraus eine PDF-Datei in eine Text-Datei konvertieren. Es soll eigentlich die gleiche Funktion sein, die im Dialog im ACROBAT-Reader als "Speichern unter..." zur Verfügung steht.

Wichtig wäre dabei auch, dass die Ausgabedatei die gleiche Struktur hat, die ACROBAT erzeugt.

Ob das mit dem letzten Punkt so klappt kann ich nicht sagen, aber wir haben vor paar Jahren für die reine Textextraktion die  Tesseract OCR Engine genutzt. Lief relativ gut und auch performant. Vielleicht ja nen Lösungsansatz...

Man kann zwar auch versuchen den Adobe Reader anzusprechen und zu automatisieren, aber das war immer problematisch und auch alles Andere als stabil.