MS-Office-Forum

MS-Office-Forum (https://www.ms-office-forum.net/forum/index.php)
-   Microsoft Access - Code Archiv (https://www.ms-office-forum.net/forum/forumdisplay.php?f=78)
-   -   Plaintext aus PDF extrahieren (https://www.ms-office-forum.net/forum/showthread.php?t=273851)

ebs17 19.01.2011 00:57

Plaintext aus PDF extrahieren
 
Manchmal besteht die Notwendigkeit, aus einem PDF-Dokument den enthaltenen Text zu ermitteln, um daraus bestimmte Teile zu extrahieren.

Die nachfolgende Funktion zeigt unter Verwendung von pdftotext, wie man eine resultierende Textdatei erzeugt:
Code:

Public Function fGetPDFText(ByVal sExecuteFile As String, _
                        ByVal sSourcePDF As String, _
                        ByVal sTargetTXT As String) As Boolean
'// ------------------------------------------------------------------------------------
'// Methode:  | Erzeugen einer Textdatei aus einem PDF-Dokument
'// ------------------------------------------------------------------------------------
'// Parameter: | sExecuteFile - vollständiger Pfad der pdftotext.exe
'//            | sSourcePDF  - vollständiger Pfad des Quelldokumentes (PDF)
'//            | sTargetTXT  - vollständiger Pfad des Zieldokumentes (TXT)
'// ------------------------------------------------------------------------------------
'// Rückgabe:  | True bei Erfolg
'// ------------------------------------------------------------------------------------
'// Autor:    | ebs17
'// ------------------------------------------------------------------------------------
'// Hinweis:  | pdftotext.exe beziehbar über http://www.foolabs.com/xpdf/download.html
'//            | aktueller Download zum 18.01.2011:
'//            | ftp://ftp.foolabs.com/pub/xpdf/xpdf-3.02pl5-win32.zip
'// ------------------------------------------------------------------------------------

  Dim sCommand As String
  Dim vResult As Variant
  sCommand = sExecuteFile & " -raw " & sSourcePDF & " " & sTargetTXT
  vResult = Shell(sCommand, vbHide)
  fGetPDFText = Not IsNull(vResult)
End Function


Scorefun 19.01.2011 12:44

bei dieser Version geht allerdings das Layout der PDF-Datei verloren.

Um das zu vermeiden, sollte statt des Paramters -raw der Parameter -layout eingesetzt werden ;)

ebs17 19.01.2011 13:29

Der Hinweis auf weitere mögliche Parameter ist richtig. Die Wahl sollte man aber von eigenen Erfordernissen abhängig machen.
Bei einem Test mit einer zwei- bis vierspaltigen Zeitung wurden bei Beibehaltung des Layouts zusammengehörige Texte zerstückelt, was dann eine nachfolgende Analyse nicht leichter macht.

In dem oben erwähnten Zip-File gibt es auch eine pdftotext.txt, die über die Parameter informiert.

Scorefun 19.01.2011 13:42

Zitat:

von ebs17 (Beitrag 1353872)
Der Hinweis auf weitere mögliche Parameter ist richtig. Die Wahl sollte man aber von eigenen Erfordernissen abhängig machen.

Da hast Du wohl recht ;)

MrSchnabel 23.07.2013 09:20

So nun kram ich dieses Thema nochmal heraus.

Erstmal vielen Danke für dieses Tutorial. Es funktioniert wunderbar.

Jetzt hab ich nochmal eine Frage : Wie behandelt ihr Leerzeichen in Datei und/oder Pfadnamen. Bei mir funktioniert die Umwandlung in die Txt nicht, wenn ein Leerzeichen drin ist.

Hier mein Aufruf :

sCommand = "" & TempDir & "pdftotext.exe" & " -layout " & TempDir & FileNameShort & " " & TempDir & Left(FileNameShort, Len(FileNameShort) - 3) & "txt"

Tempdir ist dabei der Pfad zum Ordner von PdfToText

FileNameShort ist der Dateiname(ohne Pfad)

Scorefun 23.07.2013 14:53

Dann müssen da doppelte anführungszeichen drum

MrSchnabel 23.07.2013 15:57

hey,

ja das hatte ich mir gedacht, jedoch habe ichs nicht hinbekommen, könntest du mir netterweise sagen wo ich die hinmachen soll? hatte es so versucht, dass ich jeden dateipfad einmal mit den Ausrufezeichen umschließe, hat aber irgendwie nicht hingehauen.


schon mal vielen Dank

Scorefun 23.07.2013 18:37

Code:

tempDatei = """C:\Eigene Dateien mit Leerzeichen\Deine Datei.pdf"""
oder

Code:

tempDatei = chr(13) & "C:\Eigene Dateien mit Leerzeichen\Deine Datei.pdf" & chr(13)

MrSchnabel 24.07.2013 13:29

Danke, habs jetzt hinbekommen.

abby741 04.02.2014 11:16

abby741
 
In dem oben erwähnten Zip-File gibt es auch eine pdftotext.txt, die über die Parameter informiert.

ebs17 27.10.2014 09:21

Kleine Korrektur zu Beitrag #8: Maskierung des Pfades erfolgt besser mit Doublequotes.
Code:

tempDatei = chr(34) & "C:\Eigene Dateien mit Leerzeichen\Deine Datei.pdf" & chr(34)

SMP4000 04.04.2017 17:35

Hallo Zusammen

Ich hab den Code von MOFGuru auspropiert und er läuft Super.
Nur meine Frage der bearbeitet aber nur die erste Seite was mach ich mit einem Dokument was mehrer Seiten hat?

für eure Hilfe Danke ich euch schon mal

Vg

SMP


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:26 Uhr.

Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.