hawkeye1981
Goto Top

PDF Dateien an zwei Stellen per Batch auslesen

Hallo zusammen,

ich brauche Eure Hilfe:
es soll ein großes PDF-Dokument mit Ausgangsrechnungen für eine Frankiermaschine optimiert werden. Ich habe zwar genaue Vorstellungen, was passieren muss, jedoch habe ich noch kein Werkzeug dazu gefunden.
Vielleicht könnt ihr mir helfen?
Danke

Also:

Ich bräuchte als erstes ein Tool, welches per Batch jede Seite dieser PDF-Datei an 3 gleichen Stellen ausliest. Oder kann man dies auch über einen Batch-Befehl selbst lösen?

Die ausgelesen Daten sollten in einer Log-Datei geschrieben werden, mit etwa folgendem Inhalt:
"Seite1;Kunde;Rechnungsnummer;Rechnungsseite"

Dann sollte ein Tool diese PDF-Datei auseinander nehmen und für jeden Kunden eine einzelne PDF erstellen.


So ungefähr stelle ich mir den Ablauf vor.
Kennt jemand entsprechende Tools um so ein Vorhaben mit einer Batch-Datei abzuwickeln?

Vielen Dank für Eure Mühe im Voraus

Gruß
Hawkeye

Content-Key: 166896

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

Ausgedruckt am: 28.03.2024 um 12:03 Uhr

Mitglied: Connor1980
Connor1980 25.05.2011 um 14:37:26 Uhr
Goto Top
Hallo hawkeye,

für das Auseinandernehmen wäre PDFTK das jenige welche Tool

Grüße
Mitglied: Friemler
Friemler 25.05.2011 um 14:52:42 Uhr
Goto Top
Hallo Hawkeye1981,

hier gibt es Xpdf, eine Sammlung von Konsolenprogrammen mit verschiedenem Schwerpunkt, um den Inhalt von PDF-Dateien zu extrahieren. Eines davon, PDFToText, konvertiert eine PDF- in eine Text-Datei, die sich ja dann recht einfach per Batchscript/VBS zerpflücken lässt.

Gruß
Friemler
Mitglied: Hawkeye1981
Hawkeye1981 25.05.2011 um 18:26:08 Uhr
Goto Top
Hallo zusammen,

vielen Dank für Tipp.

@connor:PDFTK funktioniert super. Danke
@Friemler: Xpdf bzw. das dftotext ist genau das was ich brauche. Danke ebenfalls

Ich habe jetzt eine Frage zu einer For-Schleife:
Ich habe eine Schleife gebaut, die in einer festen Datei einen Wert ausliest und dann die Datei danach benennt:

rem Kunde
for /f "delims=" %%i in ('findstr /n /v "tzasfdre" pg_0001.txt^|findstr "^3!"') do @set "ln=%%i"
@set "Kunde=%ln:~66,6%"
ren pg_0001.txt %kunde%.txt

Wie muss ich dass jetzt bauen, damit alle txt-Dateien in dem Verzeichnis (pg_0001,pg0002,...) angesprochen und dementsprechend umbenannt werden?
Die Batch startet in dem Verzeichnis, wo die betreffenden Dateien liegen.

Vielen Dank für Eure Hilfe.

Gruß
Hawkeye
Mitglied: Friemler
Friemler 25.05.2011 um 18:35:17 Uhr
Goto Top
Hallo Hawkeye,

versuche es mal damit (ungetestet):
@echo off

setlocal

for /f "tokens=1,2* delims=:" %%i in ('findstr /n /v "tzasfdre" pg_*.txt') do (  
  set "file=%%i"  
  set "line=%%k"  
  call :ProcessFile
)

exit /b


:ProcessFile
if "%line:~0,2%" neq "3!" exit /b  

set "Kunde=%line:~66,6%"  
echo ren "%file%" "%kunde%.txt"  

exit /b

Gruß
Friemler
Mitglied: Hawkeye1981
Hawkeye1981 26.05.2011 um 08:10:58 Uhr
Goto Top
Hallo Friemler,

leider funktioniert das Skript nicht.

Bekomme als Meldung "findstr kann pg_*.txt nicht finden.

Woran kann das liegen?

Gruß
Hawkeye
Mitglied: Friemler
Friemler 26.05.2011 um 11:41:44 Uhr
Goto Top
Hallo Hawkeye,

Du hast geschrieben, dass das Script aus dem Verzeichnis gestartet werden soll, wo auch die zu bearbeitenden Dateien abgelegt sind. Wenn diese Voraussetzung nicht erfüllt ist, kann FINDSTR seine Dateien nicht finden.

Öffne bitte ein Konsolenfenster und wechsele in das Verzeichnis mit den zu verarbeitenden Dateien. Kommentiere im Script die Zeile 1 (@echo off) aus (mit REM oder ::) und starte es aus dem Konsolenfenster. Dann kannst Du den Scriptlauf am Bildschirm verfolgen.

Gruß
Friemler
Mitglied: Hawkeye1981
Hawkeye1981 26.05.2011 um 12:32:46 Uhr
Goto Top
Hallo Friemler,

ich habe es direkt auf der Konsole ausprobiert, um gerade dieses Problem zu vermeiden. Leider bekomme ich immer noch bei Deinem Skript die gleich Fehlermeldung.
Mitglied: Friemler
Friemler 26.05.2011 um 12:58:28 Uhr
Goto Top
Hallo Hawkeye,

dann kann es eigentlich nur noch daran liegen, dass keine Dateien, auf die die Maske pg_*.txt passt, vorhanden sind.

Gib doch mal in einem Konsolenfenster dir /b pg_*.txt ein.

Oder heißen die Dateien bei Dir garnicht pg_xxxx.txt sondern evtl. pg xxxx.txt? Wenn Leerzeichen in der Maske enthalten sind, muss sie in Anführungszeichen gesetzt werden.

Gruß
Friemler