PDF-Dateien in vielen Unterordnern mit PDFTK zusammenfügen und umbenennen (Windows)
Hallo Miteinander,
ich habe ein ähnliches Problem wie in diesem Thread, allerdings sind meine Anforderungen leicht anders und das OS ist Windows anstatt Unix/Linux.
Für unsere Druckerei müssen wir für jedes Gerät (Maschine) entsprechende Schaltplane abrufen. Das Programm über das wir dies machen legt für jedes Gerät einen Ordner an, benennt diesen nach der Gerätenummer und legt wiederum drei Unterordner mit den entsprechenden Schaltplänen an. Damit wir sämtliche Schaltpläne nun komfortabel an die Drucker bzw. auch an eine CD-Brennstation schicken können ist nun folgendes notwendig.
Hier mal die Ordnerstrukur:
Für jeden Unterordner (z.B. "Schaltplaene_Elektrik") werden sämtliche darin enthaltene PDF Dateien mit Acrobat zusammengeführt und wie folgt benannt: spl_Gerätenummer_Schaltplanart.pdf > spl_053649_Elektrik.pdf
Am Ende haben wir damit 3 PDF Dateien pro Gerät die wir dann weiter verarbeiten können.
Auch wenn Acrobat mit der Zusammenführung von PDF Dateien uns einiges an Arbeit abnimmt, es ist bei der Anzahl der Geräte und Schaltpläne dennoch eine zeitaufwendige Arbeit, die vielleicht über ein Batchprogramm in Kombination mit PDFTK oder einem anderen Tool erleichtert werden kann.
Wichtig sind noch folgende Dinge: Die Zusammenstellung innerhalb der Unterordner sollte anhand der Dateigröße erfolgen, Größte Datei zuerst. Außerdem wäre es hilfreich wenn die einzelnen Bookmarks in den PDF Dateien erhalten blieben. Ob das PDFTK überhaupt unterstützt konnte ich noch nicht rausfinden. Letzterer Punkt wäre aber zur Not vernachlässigbar.
Vielleicht hat jemand einen Rat oder die Zeit um mir bei diesem Problem zu helfen.
Gruß,
Godzilla13
ich habe ein ähnliches Problem wie in diesem Thread, allerdings sind meine Anforderungen leicht anders und das OS ist Windows anstatt Unix/Linux.
Für unsere Druckerei müssen wir für jedes Gerät (Maschine) entsprechende Schaltplane abrufen. Das Programm über das wir dies machen legt für jedes Gerät einen Ordner an, benennt diesen nach der Gerätenummer und legt wiederum drei Unterordner mit den entsprechenden Schaltplänen an. Damit wir sämtliche Schaltpläne nun komfortabel an die Drucker bzw. auch an eine CD-Brennstation schicken können ist nun folgendes notwendig.
Hier mal die Ordnerstrukur:
Für jeden Unterordner (z.B. "Schaltplaene_Elektrik") werden sämtliche darin enthaltene PDF Dateien mit Acrobat zusammengeführt und wie folgt benannt: spl_Gerätenummer_Schaltplanart.pdf > spl_053649_Elektrik.pdf
Am Ende haben wir damit 3 PDF Dateien pro Gerät die wir dann weiter verarbeiten können.
Auch wenn Acrobat mit der Zusammenführung von PDF Dateien uns einiges an Arbeit abnimmt, es ist bei der Anzahl der Geräte und Schaltpläne dennoch eine zeitaufwendige Arbeit, die vielleicht über ein Batchprogramm in Kombination mit PDFTK oder einem anderen Tool erleichtert werden kann.
Wichtig sind noch folgende Dinge: Die Zusammenstellung innerhalb der Unterordner sollte anhand der Dateigröße erfolgen, Größte Datei zuerst. Außerdem wäre es hilfreich wenn die einzelnen Bookmarks in den PDF Dateien erhalten blieben. Ob das PDFTK überhaupt unterstützt konnte ich noch nicht rausfinden. Letzterer Punkt wäre aber zur Not vernachlässigbar.
Vielleicht hat jemand einen Rat oder die Zeit um mir bei diesem Problem zu helfen.
Gruß,
Godzilla13
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 69672
Url: https://administrator.de/contentid/69672
Ausgedruckt am: 14.11.2024 um 21:11 Uhr
16 Kommentare
Neuester Kommentar
Hallo Godzilla13 und willkommen im Forum!
Mit der folgenden Variation des Batch-Files aus dem anderen erwähnten Beitrag sollte das Zusammenfügen klappen:
Grüße
bastla
Mit der folgenden Variation des Batch-Files aus dem anderen erwähnten Beitrag sollte das Zusammenfügen klappen:
@echo off & setlocal
set "root=C:\test"
set "PDFTK=C:\Tools\pdftk.exe"
for /d %%i in ("%root%\*.*") do call :ProcessMachine "%%i"
goto :eof
:ProcessMachine
set "Machine=%~n1"
for /d %%v in ("%~1\*.*") do call :ProcessPlanType "%%v"
goto :eof
:ProcessPlanType
dir "%~1\*.pdf">nul 2>nul || goto :eof
for /f "tokens=2 delims=_" %%t in ('echo %~n1') do set "PDFFile=%root%\%Machine%\spl_%Machine%_%%t.pdf"
if exist "%PDFFile%" del "%PDFFile%"
set "Temp1=%~1\Temp1.tmp"
set "Temp2=%~1\Temp2.tmp"
set First=True
for /f "delims=" %%d in ('dir %1 /b /o-s /a-d') do if not defined First (
"%PDFTK%" "%Temp1%" "%~1\%%d" cat output "%Temp2%"
move "%Temp2%" "%Temp1%"
) else (
copy "%~1\%%d" "%Temp1%">nul
set First=
)
move "%Temp1%" "%PDFFile%"
goto :eof
Grüße
bastla
Hallo Godzilla13!
Wenn sicher ist, dass immer alle 3 Einzeldateien (_Elektrik.pdf, _Hydraulik.pdf, _Pneumatik.pdf) existieren, könntest Du es so versuchen:
Da ich nur eine Ergänzung der ursprünglichen Lösung vorgenommen habe, werden alle Einzeldateien wieder neu erstellt, kombiniert und schließlich gelöscht.
Grüße
bastla
Wenn sicher ist, dass immer alle 3 Einzeldateien (_Elektrik.pdf, _Hydraulik.pdf, _Pneumatik.pdf) existieren, könntest Du es so versuchen:
@echo off & setlocal
set "root=C:\test"
set "PDFTK=C:\Tools\pdftk.exe"
set "Leer=C:\Anderes Verzeichnis\Leerseite.pdf"
for /d %%i in ("%root%\*.*") do call :ProcessMachine "%%i"
goto :eof
:ProcessMachine
set "Machine=%~n1"
for /d %%v in ("%~1\*.*") do call :ProcessPlanType "%%v"
pushd "%root%\%Machine%"
set "M=spl_%Machine%"
if exist "%M%.pdf" del "%M%.pdf"
"%PDFTK%" "%M%_Elektrik.pdf" "%Leer%" "%M%_Hydraulik.pdf" "%Leer%" "%M%_Pneumatik.pdf" "%Leer%" cat output "%M%.pdf"
del "%M%_*.pdf"
popd
goto :eof
:ProcessPlanType
dir "%~1\*.pdf">nul 2>nul || goto :eof
for /f "tokens=2 delims=_" %%t in ('echo %~n1') do set "PDFFile=%root%\%Machine%\spl_%Machine%_%%t.pdf"
if exist "%PDFFile%" del "%PDFFile%"
set "Temp1=%~1\Temp1.tmp"
set "Temp2=%~1\Temp2.tmp"
set First=True
for /f "delims=" %%d in ('dir %1 /b /o-s /a-d') do if not defined First (
"%PDFTK%" "%Temp1%" "%~1\%%d" cat output "%Temp2%"
move "%Temp2%" "%Temp1%"
) else (
copy "%~1\%%d" "%Temp1%">nul
set First=
)
move "%Temp1%" "%PDFFile%"
goto :eof
Grüße
bastla
... Nachtrag: Als Absicherung gegen fehlende Einzeldateien könnte das Unterprogramm ":ProcessMachine" wie folgt geändert werden:
Grüße
bastla
[Edit] Überzählige Anführungszeichen (siehe unten) entfernt. [/Edit]
[Edit2] Total überflüssige Zeile "%M%_Pneumatik.pdf" "%Leer%" cat output "%M%.pdf" entsorgt. [/Edit2]
:ProcessMachine
set "Machine=%~n1"
for /d %%v in ("%~1\*.*") do call :ProcessPlanType "%%v"
pushd "%root%\%Machine%"
set "M=spl_%Machine%"
if exist "%M%.pdf" del "%M%.pdf"
set Dateien=
if exist "%M%_Elektrik.pdf" set "Dateien="%M%_Elektrik.pdf" "%Leer%""
if exist "%M%_Hydraulik.pdf" set "Dateien=%Dateien% "%M%_Hydraulik.pdf" "%Leer%""
if exist "%M%_Pneumatik.pdf" set "Dateien=%Dateien% "%M%_Pneumatik.pdf" "%Leer%""
"%PDFTK%" %Dateien% cat output "%M%.pdf"
del "%M%_*.pdf"
popd
goto :eof
Grüße
bastla
[Edit] Überzählige Anführungszeichen (siehe unten) entfernt. [/Edit]
[Edit2] Total überflüssige Zeile "%M%_Pneumatik.pdf" "%Leer%" cat output "%M%.pdf" entsorgt. [/Edit2]