Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

PDF-Dateien in vielen Unterordnern mit PDFTK zusammenfügen und umbenennen (Windows)

Mitglied: Godzilla13

Godzilla13 (Level 1) - Jetzt verbinden

27.09.2007, aktualisiert 18.10.2007, 9844 Aufrufe, 16 Kommentare

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:
8fc95ed1c0fc3e2f7f7fb5645c552177-bild_ordnerstruktur - Klicke auf das Bild, um es zu vergrößern

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
Mitglied: bastla
27.09.2007 um 20:31 Uhr
Hallo Godzilla13 und willkommen im Forum!

Mit der folgenden Variation des Batch-Files aus dem anderen erwähnten Beitrag sollte das Zusammenfügen klappen:
01.
@echo off & setlocal 
02.
set "root=C:\test" 
03.
set "PDFTK=C:\Tools\pdftk.exe" 
04.
 
05.
for /d %%i in ("%root%\*.*") do call :ProcessMachine "%%i" 
06.
goto :eof 
07.
 
08.
:ProcessMachine 
09.
set "Machine=%~n1" 
10.
for /d %%v in ("%~1\*.*") do call :ProcessPlanType "%%v" 
11.
goto :eof 
12.
 
13.
:ProcessPlanType 
14.
dir "%~1\*.pdf">nul 2>nul || goto :eof 
15.
for /f "tokens=2 delims=_" %%t in ('echo %~n1') do set "PDFFile=%root%\%Machine%\spl_%Machine%_%%t.pdf" 
16.
if exist "%PDFFile%" del "%PDFFile%" 
17.
set "Temp1=%~1\Temp1.tmp" 
18.
set "Temp2=%~1\Temp2.tmp" 
19.
set First=True 
20.
for /f "delims=" %%d in ('dir %1 /b /o-s /a-d') do if not defined First ( 
21.
	"%PDFTK%" "%Temp1%" "%~1\%%d" cat output "%Temp2%" 
22.
	move "%Temp2%" "%Temp1%" 
23.
) else (	 
24.
	copy "%~1\%%d" "%Temp1%">nul 
25.
	set First= 
26.
27.
move "%Temp1%" "%PDFFile%" 
28.
goto :eof
Grüße
bastla
Bitte warten ..
Mitglied: Godzilla13
01.10.2007 um 07:45 Uhr
Hallo bastla,

vielen Dank! Funktioniert einwandfrei.

Weißt du ob es evtl. noch eine PDFTK Option gibt die die Bookmarks in den PDF Files beibehält?

Gruß,
Godzilla13
Bitte warten ..
Mitglied: bastla
01.10.2007 um 07:59 Uhr
Hallo Godzilla13!

Weißt du ob es evtl. noch eine PDFTK Option gibt die die Bookmarks in den PDF Files beibehält?
Da muss ich leider passen ...

Grüße
bastla
Bitte warten ..
Mitglied: Godzilla13
17.10.2007 um 13:21 Uhr
Hallo bastla,

vielleicht kannst du mir nochmals helfen. Die Praxis hat gezeigt das ich doch am besten mit einer Datei fahre. D.h. die drei durch dein Batch erstellten Dateien (spl_012345_Elektrik.pdf; spl_012345_Hydraulik.pdf; spl_012345_Pneumatik.pdf) sollten in einem zweiten Schritt zu einer Datei (spl_012345.pdf) zusammengeführt werden. Folgende Reihenfolge sollte dabei beachtet werden:

1) ...Elektrik.pdf
2) Leerseite.pdf
3) ...Hydraulik.pdf
4) Leerseite.pdf
5) ...Pneumatik
6) Leerseite.pdf

Die drei ursprünglichen PDF Dateien können im finalen Schritt dann gerne gelöscht werden, sodass nur noch eine PDF Datei übrig bleibt. Die Leerseite.pdf liegt ein einem anderen Verz., bräuchte also noch eine Pfadangabe.

Wäre wirklich super wenn du mir das nach der neuen Anforderung noch umschreiben könntest. Danke!
Bitte warten ..
Mitglied: bastla
17.10.2007 um 20:06 Uhr
Hallo Godzilla13!

Wenn sicher ist, dass immer alle 3 Einzeldateien (_Elektrik.pdf, _Hydraulik.pdf, _Pneumatik.pdf) existieren, könntest Du es so versuchen:
01.
@echo off & setlocal 
02.
set "root=C:\test" 
03.
set "PDFTK=C:\Tools\pdftk.exe" 
04.
set "Leer=C:\Anderes Verzeichnis\Leerseite.pdf" 
05.
 
06.
for /d %%i in ("%root%\*.*") do call :ProcessMachine "%%i" 
07.
goto :eof 
08.
 
09.
:ProcessMachine 
10.
set "Machine=%~n1" 
11.
for /d %%v in ("%~1\*.*") do call :ProcessPlanType "%%v" 
12.
pushd "%root%\%Machine%" 
13.
set "M=spl_%Machine%" 
14.
if exist "%M%.pdf" del "%M%.pdf" 
15.
"%PDFTK%" "%M%_Elektrik.pdf" "%Leer%" "%M%_Hydraulik.pdf" "%Leer%" "%M%_Pneumatik.pdf" "%Leer%" cat output "%M%.pdf" 
16.
del "%M%_*.pdf" 
17.
popd 
18.
goto :eof 
19.
 
20.
:ProcessPlanType 
21.
dir "%~1\*.pdf">nul 2>nul || goto :eof 
22.
for /f "tokens=2 delims=_" %%t in ('echo %~n1') do set "PDFFile=%root%\%Machine%\spl_%Machine%_%%t.pdf" 
23.
if exist "%PDFFile%" del "%PDFFile%" 
24.
set "Temp1=%~1\Temp1.tmp" 
25.
set "Temp2=%~1\Temp2.tmp" 
26.
set First=True 
27.
for /f "delims=" %%d in ('dir %1 /b /o-s /a-d') do if not defined First ( 
28.
	"%PDFTK%" "%Temp1%" "%~1\%%d" cat output "%Temp2%" 
29.
	move "%Temp2%" "%Temp1%" 
30.
) else (	 
31.
	copy "%~1\%%d" "%Temp1%">nul 
32.
	set First= 
33.
34.
move "%Temp1%" "%PDFFile%" 
35.
goto :eof
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
Bitte warten ..
Mitglied: bastla
17.10.2007 um 21:21 Uhr
... Nachtrag: Als Absicherung gegen fehlende Einzeldateien könnte das Unterprogramm ":ProcessMachine" wie folgt geändert werden:
01.
:ProcessMachine 
02.
set "Machine=%~n1" 
03.
for /d %%v in ("%~1\*.*") do call :ProcessPlanType "%%v" 
04.
pushd "%root%\%Machine%" 
05.
set "M=spl_%Machine%" 
06.
if exist "%M%.pdf" del "%M%.pdf" 
07.
set Dateien= 
08.
if exist "%M%_Elektrik.pdf" set "Dateien="%M%_Elektrik.pdf" "%Leer%"" 
09.
if exist "%M%_Hydraulik.pdf" set "Dateien=%Dateien% "%M%_Hydraulik.pdf" "%Leer%"" 
10.
if exist "%M%_Pneumatik.pdf" set "Dateien=%Dateien% "%M%_Pneumatik.pdf" "%Leer%"" 
11.
"%PDFTK%" %Dateien% cat output "%M%.pdf" 
12.
del "%M%_*.pdf" 
13.
popd 
14.
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]
Bitte warten ..
Mitglied: Godzilla13
18.10.2007 um 07:26 Uhr
In deiner Ergänzung muss sich noch ein Fehler eingeschlichen haben. Er macht mir die Datei spl_xxx_Pneumatik.pdf auf beim BAT ausführen und bricht den BAT mit der Fehlermeldung ab:

Error: Failed to open PDF file:
spl_053649_Elektrik.pdf C:\SPL_tools\Leerblatt.pdf spl_053649_Hydraulik.pdf C
:\SPL_tools\Leerblatt.pdf spl_053649_Pneumatik.pdf C:\SPL_tools\Leerblatt.pdf
Errors encountered. No output created.
Done. Input errors, so no output created.
Bitte warten ..
Mitglied: bastla
18.10.2007 um 07:44 Uhr
Hallo Godzilla13!

Da hatte ich's etwas zu gut mit den Anführungszeichen gemeint ...

In der Zeile
01.
"%PDFTK%" "%Dateien%" cat output "%M%.pdf"
darf die Variable %Dateien% nicht in Anführungszeichen eingeschlossen werden.

Ich ändere das auch gleich oben.

Grüße
bastla
Bitte warten ..
Mitglied: Godzilla13
18.10.2007 um 07:52 Uhr
Ich hab das mal geändert, jetzt kommt zwar keine Fehlermeldung mehr aber er öffnet mir dennoch die spl_xxx_Pneumatik.pdf, und zwar von dem Gerät wo der Ordner Hydraulik fehlt. Das BAT bleibt offen stehen.
Bitte warten ..
Mitglied: Godzilla13
18.10.2007 um 08:03 Uhr
Ergänzung: Wenn ich die geöffnete PDF Datei schließe, läuft das Script weiter, öffnet mir den nächsten Pneumatik Gesamtschaltplan und ist dann fertig, inkl. den richtigen Ausgabefiles.
Bitte warten ..
Mitglied: Godzilla13
18.10.2007 um 08:04 Uhr
Kann es sein das die Zeile raus gehört?

"%M%_Pneumatik.pdf" "%Leer%" cat output "%M%.pdf"
Bitte warten ..
Mitglied: bastla
18.10.2007 um 08:04 Uhr
Hallo Godzilla13!

Ich kann diesen Fehler mit meinen Testdaten nicht nachvollziehen.

Stell doch bitte die angezeigte Meldung herein.

Grüße
bastla
Bitte warten ..
Mitglied: Godzilla13
18.10.2007 um 08:09 Uhr
Ich hab dir oben noch was rein editiert, wenn die Zeile im Script fehlt läuft es durch. Weiß nicht ob dafür an anderer Stelle was fehlt oder ob die Zeile wirklich raus gehört.
Bitte warten ..
Mitglied: bastla
18.10.2007 um 08:09 Uhr
Kann es sein das die Zeile raus gehört?

> "%M%_Pneumatik.pdf" "%Leer%" cat output "%M%.pdf"


Ja - die hätte eigentlich nie reingehört (ist anscheinend vom Testen stehen geblieben).

Grüße
bastla
Bitte warten ..
Mitglied: bastla
18.10.2007 um 08:13 Uhr
Hallo Godzilla13!

Du hast den Fehler richtig erkannt (und behoben). Die genannte Zeile ist total entbehrlich.

Grüße
bastla
Bitte warten ..
Mitglied: Godzilla13
18.10.2007 um 08:17 Uhr
Vielen Dank für die wieder einmal super Unterstützung!
Bitte warten ..
Ähnliche Inhalte
Windows Tools

PDFTK - Zusammenfügen mehrer Dateien mit gleichem Anfang

Frage von flo99987Windows Tools2 Kommentare

Hallo, ich verzweilfe etwas am PDFTK da auch meine Batch Kenntnisse eher zu Wünschen übrig lassen. Daher bitte ich ...

Batch & Shell

Umbenennen von Dateien mit Ordnernamen und Unterordner

gelöst Frage von Xaero1982Batch & Shell10 Kommentare

Moin Zusammen, folgendes Problem: Ich habe einen Ordner. Nennen wir ihn "Fotos" In diesem Ordner sind dann Zig Unterordner ...

Batch & Shell

Dateien mit bestimmten Namen in allen Unterordnern umbenennen

Frage von koehneBatch & Shell2 Kommentare

Hi, ich bräuchte mal fix eure Hilfe, weil ich nicht weiterkomme. Ich habe in einem Ordner mehrere Unterordner. In ...

Windows Tools

PDFs nummerieren und zusammenfügen

gelöst Frage von DeeJayBeeWindows Tools3 Kommentare

Hallo zusammen, mein Kollege muss für eine Behörde ein paar Daten zusammen suchen. Es gibt ein Antragsformular (ausfüllbares PDF), ...

Neue Wissensbeiträge
Erkennung und -Abwehr

Neue Sicherheitslücke Foreshadow (L1TF) gefährdet fast alle Intel-Prozessoren

Information von Frank vor 7 StundenErkennung und -Abwehr1 Kommentar

Eine neue Sicherheitslücke, genannt Foreshadow (alias L1TF) wurde auf der Usenix Security 18 von einem Team internationaler Experten veröffentlicht. ...

Vmware
VMware Updates gegen L1 Lücke
Information von sabines vor 14 StundenVmware

Für die Vmware Produkte vCenter Server, ESXi, Workstation und Fusion stehe Updates bereit um die L1 Lücke zu schließen. ...

Drucker und Scanner
HP-MF-Drucker per Fax angreifbsr
Information von Lochkartenstanzer vor 2 TagenDrucker und Scanner3 Kommentare

Endlich eine sinnvolle Verwendung für Faxe: Damit kann man offensichtlich den Drucker übernehmen. lks

Router & Routing

Das pfSense Buch ist jetzt für jeden kostenlos zu beziehen

Tipp von magicteddy vor 3 TagenRouter & Routing2 Kommentare

Bisher war das Buch nur für zahlende Unterstützer verfügbar, jetzt steht für Jedermann kostenlos zur Verfügung. Siehe auch The ...

Heiß diskutierte Inhalte
Microsoft
VPN Verbindung kann nicht aufgebaut werden
Frage von AlexderITlerMicrosoft35 Kommentare

Hallo, Ich möchte an einem unserer PCs in unserer Tochterfirma eine VPN zu unserem Netzwerk einrichten. Das schlägt allerdings ...

Windows Server
Domäne einsilbig mit nur einem Namen benannt - sowie AD und MX auf einer VM Kardinalsfehler?
Frage von TomTestWindows Server27 Kommentare

Hallo liebe Freunde gepflegter Probleme, seit kurzem soll ich eine Domäne verwalten die zuvor von einem IT-Dienstleister erstellt und ...

Datenbanken
MySQL Datenbank Import Aufgabe für mehrere .csv dateien
gelöst Frage von Marcel1989Datenbanken19 Kommentare

Hi, ich komm nicht weiter. Ich hab auf einem Windows Server 2012 r2 eine MariaDB/MySQL laufen. Nun soll diese ...

DNS
Gibt es eine Art DNS Proxy?
Frage von icepietDNS15 Kommentare

Hallo Nerds, Ich würde gerne folgendes machen: ts.domain.de:3389 soll auf 1.2.3.4:3389 auflösen ts2.domain.de:3389 soll auf 1.2.3.4:3390 auflösen Gibt es ...