blackvictory
Goto Top

PDF Datei auslesen und bei Stichwörtern ausdrucken

Sehr geehrter Community,
ich sitze mal wieder an einem neuen Problem.

es wird in unregelmäßigen Abständen eine PDF Datei in einem Ordner erstellt

x:\PDF-input\Abrechnung1.pdf

Nun brauche ich eine Möglichkeit die Datei Abrechnung1.pdf zu analysieren (ORC vorhanden).
Wenn der Begriff "ABC" vorkommt, dann soll die Datei Abrechnung1.pdf über einen Netzwerkdrucker ausgedruckt werden und in einen Ordner verschoben werden.
Sollte der Begriff "ABC" nicht in der Datei Vorkommen, dann soll die Datei einfach nur verschoben werden ohne ausgedruckt zu werden.

Habe ich eine Möglichkeit dies zu machen ?
Kann ich sowas mit einem Batch-Script schaffen ?

Als Script würde ich es folgendesmaßen machen.

1. Durchsuche das Verzeichnis x:\PDF-input nach PDF Dateien und schreibe diese zeilenweiße in eine Text-Datei
2. öffne die PDF-Datei welche in der ersten Zeile genannt ist und durchsuche diese Datei nach dem Stichwort "ABC"
3. Wenn "ABC" vorhanden ist, Datei an drucker senden und in den Ordner x:\PDF-inpunt\fertig verschieben.
4. ansonsten Datei nach x:\PDF-input\fertig verschieben

Diese Batch Datei würde ich einmal in der Sekunde ausführen lassen. Rechenleistung sollte diese ja nicht benötigen.

Es wird pro viertel Stunde vielleicht eine PDF-Datei zu analysieren sein.

Hat jemand von euch einen Lösungsvorschlag ?

Soweit kann ich alles Programmieren, nur das Umwandeln des Inhaltes von der PDF-Datei in eine TXT-Datei schaffe ich nicht, bzw. das Auslesen der PDF-Datei nach dem Schlüsselwort.


Mit freundlichen Grüßen und herzlichen Danke schon mal im Voraus

Wolfram

Content-Key: 254708

Url: https://administrator.de/contentid/254708

Printed on: April 18, 2024 at 10:04 o'clock

Member: colinardo
colinardo Nov 13, 2014, updated at Nov 14, 2014 at 08:04:47 (UTC)
Goto Top
Hallo Wolfram,
das ist kein Problem z.B. mit VBS. Eine Frage: Suchst du immer nur nach der einen Datei Abrechnung1.pdf, oder sollen alle PDF-Dateien in dem Ordner nach dem Suchwort durchsucht werden ?

Für den Fall das immer nur das eine File Abrechnung1.pdf durchsucht werden muss, kannst du folgendes VBS-Script nehmen.
Für das Script benötigst du das Kommandozeilentool [ftp://ftp.foolabs.com/pub/xpdf/xpdfbin-win-3.04.zip pdf2text]. Aus dem Zipfile speicherst du dir die "pdf2text.exe" z.B. nach x:\pdf2text.exe. Die Pfade und Konstanten in den ersten Zeilen sind an deine Bedürfnisse anzupassen. Der verschobenen Datei wird immer noch das Datum und Uhrzeit angehängt damit Duplikate verhindert werden.
' Konstanten  
Const PDF_INPUT = "x:\PDF-input\Abrechnung1.pdf"  
Const PDF_OUTPUT = "x:\PDF-input\fertig"  
Const PDFTOTEXT = "x:\pdftotext.exe"  
Const STRING_SEARCH = "ABC"  

' Variablen  
Dim strTempFile, fso, objShell,objShellApp, strContent, strPathNew

'Objekte  
Set fso = CreateObject("Scripting.Filesystemobject")  
Set objShell = CreateObject("Wscript.Shell")  
Set objShellApp = CreateObject("Shell.Application")  

'Ausgabeordner erstellen  
If Not fso.FolderExists(PDF_OUTPUT) Then fso.CreateFolder(PDF_OUTPUT)
'Datei in der temporär der PDF-Text extrahiert wird  
strTempFile = objShell.ExpandEnvironmentStrings("%temp%") & "\extracted.txt"  

If fso.FileExists(PDF_INPUT) Then
	'Temporäre Datei löschen  
	If fso.FileExists(strTempFile) Then fso.DeleteFile(strTempFile)
	'PDFtoText ausführen  
	objShell.Run """" & PDFTOTEXT & """ -raw """ & PDF_INPUT & """ """ & strTempFile & """",0,True  
	'Inhalt der Textdatei auslesen  
	strContent = fso.OpenTextFile(strTempFile,1).ReadAll()
	'wenn Suchwort gefunden wurde  
	If InStr(1,strContent,STRING_SEARCH,1) > 0 Then
		'PDF drucken  
		objShellApp.ShellExecute PDF_INPUT, "","","print",0  
		WScript.Sleep(3000)
	End If
	'neuer Pfad für die PDF-Datet (es wird das Datum und Uhrzeit angehängt, wegen Duplikaten)  
	strPathNew = PDF_OUTPUT & "\" & fso.GetBaseName(PDF_INPUT) & "_" & Replace(Now,":","-") & ".pdf"  
	
	'PDF verschieben  
	On Error Resume Next
	fso.MoveFile PDF_INPUT, strPathNew
	While Err.Number <> 0
		WScript.Sleep 250
		Err.Clear
		fso.MoveFile file.Path, strPathNew
	Wend
End If
	
Set fso = Nothing
Set objShell = Nothing
Set objShellApp = Nothing

Diese Batch Datei würde ich einmal in der Sekunde ausführen lassen.
ist ein bißchen oft ... wenn nur jede 15 Minuten ein PDF zu verarbeiten ist.

Grüße Uwe
Member: colinardo
colinardo Dec 15, 2014 at 09:22:38 (UTC)
Goto Top
Kommt hier noch Rückmeldung ?

Wenns das dann war, den Beitrag bitte noch auf gelöst setzen. Merci.