PDF-Dateien zusammenführen mit PDFTK
Die Fragestellung an sich läßt noch nicht auf das eigentliche Problem schliessen. Es handelt sich hierbei um PDF's in Einzelteilen, die als Gesamtdokument erstellt werden sollen. Allerdings muß die Struktur in der Benennung der PDF's erhalten bleiben.
Hallo,
ich gehe davon aus, dass ihr mit meinen bisherigen Ausführungen noch keine Lösung haben werdet.
Was ich suche ist eine Script, dass mir mit PDFTK Dateien Zusammenführt.
Die Struktur der Dateien lautet: Titel-Teily-xxx.pdf
Titel = Der Name der Datei (nennen wir sie Report, dieser bleibt immer gleich)
Teily = Der Teil der gesplitteten PDF-Datei. z.B. Report-Teil1-xxx.pdf, Report-Teil2-xxx.pdf, Report-Teil3-xxx.pdf
xxx = Der Name eines Kunden.
Somit hat dann die Struktur meiner PDF-Dateien in einem Ordner folgendes Aussehen:
Report-Teil1-Heinz.pdf
Report-Teil2-Heinz.pdf
Report-Teil3-Heinz.pdf
Report-Teil1-Walter.pdf
Report-Teil2-Walter.pdf
Report-Teil3-Walter.pdf
...
(Es sind über 200 mal Teil 1-3 vorhanden).
Daraus möchte ich nun folgendes machen.
Report-Gesamt-Heinz.pdf
Report-Gesamt-Walter.pdf
...
Wohin die Ausgabe erfolgt ist erstmal egal. Sie kann in das selbe Verzeichnis erfogen.
Die eigentliche Herausforderung ist denke ich das Herausfinden von Teil 1-3 und dem dazugehörigen Namen.
Ich habe schon mal so was probiert (gefunden im Forum):
@echo off & setlocal
set "Base=C:\Local_Reports_C8\Quartalreports"
set "PDFTK=C:\Tools\pdftk.exe"
set "PDF1=Report-Teil1-?????????????????????????????????????????????????????????????"
set "PDF2=Report-Teil2-?????????????????????????????????????????????????????????????"
set "PDFGes=Report_Gesamt"
for /d %%i in ("%Base%\*.*") do call :ProcessCust "%%i"
goto :eof
:ProcessCust
pushd "%~f1"
if not exist "%PDF1%_*.pdf" goto :EndSub
for /f "tokens=2* delims=_" %%a in ('dir /b "%PDF1%_*.pdf"') do set "Suffix=%%b"
"%PDFTK%" %PDF1%_%Suffix% %PDF2%_%Suffix% %PDF3%_%Suffix% cat output "%PDFGes%_%Suffix%" dont_ask
:EndSub
popd
Es funktioniert aber nicht und ist sicher auch nicht die gewünschte Lösung.
Kann mir jemand Unterstützung geben?
Vielen Dank für eure Mühe,
sharki
Hallo,
ich gehe davon aus, dass ihr mit meinen bisherigen Ausführungen noch keine Lösung haben werdet.
Was ich suche ist eine Script, dass mir mit PDFTK Dateien Zusammenführt.
Die Struktur der Dateien lautet: Titel-Teily-xxx.pdf
Titel = Der Name der Datei (nennen wir sie Report, dieser bleibt immer gleich)
Teily = Der Teil der gesplitteten PDF-Datei. z.B. Report-Teil1-xxx.pdf, Report-Teil2-xxx.pdf, Report-Teil3-xxx.pdf
xxx = Der Name eines Kunden.
Somit hat dann die Struktur meiner PDF-Dateien in einem Ordner folgendes Aussehen:
Report-Teil1-Heinz.pdf
Report-Teil2-Heinz.pdf
Report-Teil3-Heinz.pdf
Report-Teil1-Walter.pdf
Report-Teil2-Walter.pdf
Report-Teil3-Walter.pdf
...
(Es sind über 200 mal Teil 1-3 vorhanden).
Daraus möchte ich nun folgendes machen.
Report-Gesamt-Heinz.pdf
Report-Gesamt-Walter.pdf
...
Wohin die Ausgabe erfolgt ist erstmal egal. Sie kann in das selbe Verzeichnis erfogen.
Die eigentliche Herausforderung ist denke ich das Herausfinden von Teil 1-3 und dem dazugehörigen Namen.
Ich habe schon mal so was probiert (gefunden im Forum):
@echo off & setlocal
set "Base=C:\Local_Reports_C8\Quartalreports"
set "PDFTK=C:\Tools\pdftk.exe"
set "PDF1=Report-Teil1-?????????????????????????????????????????????????????????????"
set "PDF2=Report-Teil2-?????????????????????????????????????????????????????????????"
set "PDFGes=Report_Gesamt"
for /d %%i in ("%Base%\*.*") do call :ProcessCust "%%i"
goto :eof
:ProcessCust
pushd "%~f1"
if not exist "%PDF1%_*.pdf" goto :EndSub
for /f "tokens=2* delims=_" %%a in ('dir /b "%PDF1%_*.pdf"') do set "Suffix=%%b"
"%PDFTK%" %PDF1%_%Suffix% %PDF2%_%Suffix% %PDF3%_%Suffix% cat output "%PDFGes%_%Suffix%" dont_ask
:EndSub
popd
Es funktioniert aber nicht und ist sicher auch nicht die gewünschte Lösung.
Kann mir jemand Unterstützung geben?
Vielen Dank für eure Mühe,
sharki
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 95093
Url: https://administrator.de/forum/pdf-dateien-zusammenfuehren-mit-pdftk-95093.html
Ausgedruckt am: 28.04.2025 um 07:04 Uhr
10 Kommentare
Neuester Kommentar
Hallo sharki und willkommen im Forum!
Unter Verwendung des Trennzeichens "_" (in Deinem Beispiel hattest Du "-", im Batch "_") könnte das so gehen:
Grüße
bastla
Unter Verwendung des Trennzeichens "_" (in Deinem Beispiel hattest Du "-", im Batch "_") könnte das so gehen:
@echo off & setlocal
set "Base=C:\Local_Reports_C8\Quartalreports"
set "PDFTK=C:\Tools\pdftk.exe"
set "PDF1=Report_Teil1"
set "PDF2=Report_Teil2"
set "PDF3=Report_Teil3"
set "PDFGes=Report_Gesamt"
for /d %%i in ("%Base%\*.*") do call :ProcessCust "%%i"
goto :eof
:ProcessCust
pushd "%~f1"
for %%r in ("%PDF1%_*.pdf") do call :ProcessRep "%%r"
popd
goto :eof
:ProcessRep
for /f "tokens=2* delims=_" %%a in ("%~nx1") do set "Suffix=%%b"
if not exist "%PDF2%_%Suffix%" goto :eof
if not exist "%PDF3%_%Suffix%" goto :eof
echo "%PDFTK%" %PDF1%_%Suffix% %PDF2%_%Suffix% %PDF3%_%Suffix% cat output "%PDFGes%_%Suffix%" dont_ask
goto :eof
bastla
Hallo sharki!
Da hatte ich mich ein wenig auf Deine Zeile für den "pdftk"-Aufruf verlassen und auf die (ansonsten schon gewohnheitsmäßig gesetzten) Anführungszeichen verzichtet ...
So sollte es besser sein (dann ist auch das - vorhin gar nicht erwähnte - "echo" zum Testen der Zeile weg):
[Edit] Außerdem fällt mir auf, dass Du in der Zeile (hättest Du mit < code>-Tags gepostet, könnte ich hier die Zeilennummer angeben
)
als Trennzeichen "-" und nicht "_" verwendet hast ...
[/Edit]
[Edit2] Auch in der Zeile
ist es ein "-", während Du in
wieder "_" verwendest.
[/Edit2]
Grüße
bastla
Da hatte ich mich ein wenig auf Deine Zeile für den "pdftk"-Aufruf verlassen und auf die (ansonsten schon gewohnheitsmäßig gesetzten) Anführungszeichen verzichtet ...
So sollte es besser sein (dann ist auch das - vorhin gar nicht erwähnte - "echo" zum Testen der Zeile weg):
"%PDFTK%" "%PDF1%_%Suffix%" "%PDF2%_%Suffix%" "%PDF3%_%Suffix%" cat output "%PDFGes%_%Suffix%" dont_ask
for %%r in ("%PDF1%-*.pdf") do call :ProcessRep "%%r"
[/Edit]
[Edit2] Auch in der Zeile
for /f "tokens=2* delims=-" %%a in ("%~nx1") do set "Suffix=%%b"
echo "%PDFTK%" %PDF1%_%Suffix% %PDF2%_%Suffix% cat output "%PDFGes%_%Suffix%" dont_ask
[/Edit2]
Grüße
bastla
Hallo sharki!
Da Du das "pushd" herausgenommen hast, fehlt Dir jetzt der Pfad ("%Base%") - daher entweder vor der Zeile 11
und danach das "popd", oder konsequente Verwendung des Pfades in den Zeilen 19 und 22, also für letztere:
Grüße
bastla
Da Du das "pushd" herausgenommen hast, fehlt Dir jetzt der Pfad ("%Base%") - daher entweder vor der Zeile 11
pushd "%Base%"
"%PDFTK%" "%Base%\%PDF1%-%Suffix%" "%Base%\%PDF2%-%Suffix%" cat output "%Base%\%PDFGes%-%Suffix%" dont_ask
Grüße
bastla