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 zusammenführen mit PDFTK

Mitglied: sharki

sharki (Level 1) - Jetzt verbinden

22.08.2008, aktualisiert 18:00 Uhr, 7658 Aufrufe, 10 Kommentare

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
Mitglied: bastla
22.08.2008 um 12:22 Uhr
Hallo sharki und willkommen im Forum!

Unter Verwendung des Trennzeichens "_" (in Deinem Beispiel hattest Du "-", im Batch "_") könnte das so gehen:
01.
@echo off & setlocal 
02.
set "Base=C:\Local_Reports_C8\Quartalreports" 
03.
set "PDFTK=C:\Tools\pdftk.exe" 
04.
set "PDF1=Report_Teil1" 
05.
set "PDF2=Report_Teil2" 
06.
set "PDF3=Report_Teil3" 
07.
set "PDFGes=Report_Gesamt" 
08.
for /d %%i in ("%Base%\*.*") do call :ProcessCust "%%i" 
09.
goto :eof 
10.
 
11.
:ProcessCust 
12.
pushd "%~f1" 
13.
for %%r in ("%PDF1%_*.pdf") do call :ProcessRep "%%r" 
14.
popd 
15.
goto :eof 
16.
 
17.
:ProcessRep 
18.
for /f "tokens=2* delims=_" %%a in ("%~nx1") do set "Suffix=%%b" 
19.
if not exist "%PDF2%_%Suffix%" goto :eof 
20.
if not exist "%PDF3%_%Suffix%" goto :eof 
21.
echo "%PDFTK%" %PDF1%_%Suffix% %PDF2%_%Suffix% %PDF3%_%Suffix% cat output "%PDFGes%_%Suffix%" dont_ask 
22.
goto :eof 
23.
 
Grüße
bastla
Bitte warten ..
Mitglied: sharki
22.08.2008 um 12:51 Uhr
Hallo bastla,

danke für die schnelle Antowrt. Allerings habe ich da noch ein paar Schwierigkeiten.

Die Batch scheint immer aus dem Programm zu springen. Ich poste mal meinen Code:

@echo off & setlocal
set "Base=C:\Local_Reports_C8\Quartalreports"
set "PDFTK=C:\Tools\pdftk.exe"
set "PDF1=Report v2.16_Teil1-de"
set "PDF2=Report v2.16_Teil2-de"

set "PDFGes=Report_Gesamt"
echo %PDF1%
pause
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

echo "%PDFTK%" %PDF1%_%Suffix% %PDF2%_%Suffix% cat output "%PDFGes%_%Suffix%" dont_ask
goto :eof


Kann es sein, dass die Namen meiner Dateien das Problem sind?

Dank,

sharki
Bitte warten ..
Mitglied: bastla
22.08.2008 um 13:13 Uhr
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):
01.
"%PDFTK%" "%PDF1%_%Suffix%" "%PDF2%_%Suffix%" "%PDF3%_%Suffix%" cat output "%PDFGes%_%Suffix%" dont_ask
[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 )
01.
for %%r in ("%PDF1%-*.pdf") do call :ProcessRep "%%r"
als Trennzeichen "-" und nicht "_" verwendet hast ...
[/Edit]
[Edit2] Auch in der Zeile
01.
for /f "tokens=2* delims=-" %%a in ("%~nx1") do set "Suffix=%%b"
ist es ein "-", während Du in
01.
echo "%PDFTK%" %PDF1%_%Suffix% %PDF2%_%Suffix% cat output "%PDFGes%_%Suffix%" dont_ask
wieder "_" verwendest.
[/Edit2]

Grüße
bastla
Bitte warten ..
Mitglied: sharki
22.08.2008 um 13:53 Uhr
Hallo bastla,

ich habe festgestellt, das es wohl an der Zeile:

01.
for /d %%i in ("%Base%\*.*") do call :ProcessCust "%%i" 
02.
goto :eof
liegt. (*lernfähig*)

Hier springt die batch nicht in ProzessCust sondern macht goto :eof

Ich habe mir mal PDF1 und PDF2 anzeigen lassen und auch Base. Sieht alles ok aus. Dateien sind auch im Verzeichnis

Gruß,

sharki
Bitte warten ..
Mitglied: bastla
22.08.2008 um 14:05 Uhr
Hallo sharki!

"for /d" bezieht sich ja auf Verzeichnisse, nicht auf Dateien - demnach sieht es so aus, als ob es in %Base% keine Unterverzeichnisse gäbe ...

Grüße
bastla
Bitte warten ..
Mitglied: sharki
22.08.2008 um 14:18 Uhr
Hi bastla,

deine Aussage stimmt soweit. Es gibt ein Verzeichnis und in dessen root liegen die PDF's.
Bzw. die Ausgabe von Base sieht konkret so aus: C:\Test\

Ich habe deshalb mal den Code verändert:

01.
@echo off & setlocal 
02.
set "Base=C:\Test" 
03.
set "PDFTK=C:\Tools\pdftk.exe" 
04.
set "PDF1=Quartalsbericht v2.16_Teil1-de" 
05.
set "PDF2=Quartalsbericht v2.16_Teil2-de" 
06.
 
07.
set "PDFGes=Report_Gesamt" 
08.
echo %PDF1% 
09.
pause 
10.
echo mit: "%Base%\*.pdf" ohne: %Base%\*.pdf 
11.
for %%i in ("%Base%\*.pdf") do call :ProcessRep "%%i" 
12.
echo 1 
13.
pause 
14.
goto :eof 
15.
 
16.
 
17.
:ProcessRep 
18.
for /f "tokens=2* delims=-" %%a in ("%~nx1") do set "Suffix=%%b" 
19.
rem if not exist "%PDF2%-%Suffix%" goto :eof 
20.
echo 4 
21.
pause 
22.
"%PDFTK%" "%PDF1%-%Suffix%" "%PDF2%-%Suffix%" cat output "%PDFGes%_%Suffix%" dont_ask 
23.
 
24.
goto :eof
Ich bekomme jetzt zwar noch Fehler "Faild to open PDF File" aber die Variablen sehen gut aus und der richtige Name steht auch drin!
Ich denke ich bin kurz vor der Lösung!

Vielen Dank bis dato... Das war echt ne riesen Hilfe!

Ich denke mal, dass das Problem mit dem öffnen nicht deine Baustelle ist?

Gruß,

sharki
Bitte warten ..
Mitglied: bastla
22.08.2008 um 14:36 Uhr
Hallo sharki!

Die "for /d"-Zeile dient dazu, jedes Verzeichnis unterhalb von %Base% (also damit also jedes unmittelbare Unterverzeichnis von "C:\Test\") zu bearbeiten - mit "pushd" wird dann in dieses Verzeichnis gewechselt und darin nach .pdf-Dateien gesucht.

Grüße
bastla
Bitte warten ..
Mitglied: bastla
22.08.2008 um 14:47 Uhr
Gelöschter Doppelpost
Bitte warten ..
Mitglied: sharki
22.08.2008 um 14:55 Uhr
Hi bastla,

Ich habe deshalb mal den Code verändert:

01.
@echo off & setlocal 
02.
set "Base=C:\Test" 
03.
set "PDFTK=C:\Tools\pdftk.exe" 
04.
set "PDF1=Quartalsbericht v2.16_Teil1-de" 
05.
set "PDF2=Quartalsbericht v2.16_Teil2-de" 
06.
 
07.
set "PDFGes=Report_Gesamt" 
08.
echo %PDF1% 
09.
pause 
10.
echo mit: "%Base%\*.pdf" ohne: %Base%\*.pdf 
11.
for %%i in ("%Base%\*.pdf") do call :ProcessRep "%%i" 
12.
echo 1 
13.
pause 
14.
goto :eof 
15.
 
16.
 
17.
:ProcessRep 
18.
for /f "tokens=2* delims=-" %%a in ("%~nx1") do set "Suffix=%%b" 
19.
rem if not exist "%PDF2%-%Suffix%" goto :eof 
20.
echo 4 
21.
pause 
22.
"%PDFTK%" "%PDF1%-%Suffix%" "%PDF2%-%Suffix%" cat output "%PDFGes%-%Suffix%" dont_ask 
23.
 
24.
goto :eof
Ich bekomme jetzt zwar noch Fehler "Faild to open PDF File" aber die Variablen sehen gut aus und der richtige Name steht auch drin!
Ich denke ich bin kurz vor der Lösung!

Vielen Dank bis dato... Das war echt ne riesen Hilfe!

Ich denke mal, dass das Problem mit dem öffnen nicht deine Baustelle ist?

Gruß,

sharki
Bitte warten ..
Mitglied: bastla
22.08.2008 um 17:59 Uhr
Hallo sharki!

Da Du das "pushd" herausgenommen hast, fehlt Dir jetzt der Pfad ("%Base%") - daher entweder vor der Zeile 11
01.
pushd "%Base%"
und danach das "popd", oder konsequente Verwendung des Pfades in den Zeilen 19 und 22, also für letztere:
01.
"%PDFTK%" "%Base%\%PDF1%-%Suffix%" "%Base%\%PDF2%-%Suffix%" cat output "%Base%\%PDFGes%-%Suffix%" dont_ask
Grüße
bastla
Bitte warten ..
Ähnliche Inhalte
Entwicklung

PDFs mit selben Namen zusammenführen

Frage von flackmannEntwicklung2 Kommentare

Hallo zusammen, ich habe ein "Problem" bzw. einen Arbeitsschritt den ich optimieren will. Kollege aus dem Back Office welcher ...

Batch & Shell

Automatische PDF Erstellung mit dem Programm PDFTK aus Dateien mit gleicher Anfangsbezeichnung im Dateinamen

gelöst Frage von BirgitBBatch & Shell12 Kommentare

Hallo, Eigentlich ist mir damals schon geholfen worden. Unter dem Link lösung Damals waren es immer 2 PDF-Dateien mit ...

Batch & Shell

Größere PDF Datei immer nach 3 Seiten trennen (pdftk)

gelöst Frage von IceAgeBatch & Shell6 Kommentare

Guten Morgen Liebe Kollegen, kleine Frage am Rande an diejenigen, die sich bereits mit pdftk auseinandergesetzt haben. Ich habe ...

Batch & Shell

Automatische PDF Erstellung mit PDFTK aus Dateien mit gleichen Anfangsbezeichnung im Dateinamen

gelöst Frage von BirgitBBatch & Shell7 Kommentare

Ich verstehe nichts von Programmierung. Das nur schon mal vorab. Habe mich auch schon 2 Tage durch die Seiten ...

Neue Wissensbeiträge
Humor (lol)

WhatsApp-Nachrichten endlich auch per Bluetooth versendbar

Information von BassFishFox vor 4 StundenHumor (lol)1 Kommentar

Genau darauf habe ich gewartet! ;-) Der beliebte Messaging-Dienst WhatsApp erhält eine praktische neue Funktion: Ab dem nächsten Update ...

Google Android

Googles "Android Enterprise Recommended" für Unternehmen

Information von kgborn vor 16 StundenGoogle Android3 Kommentare

Hier eine Information, die für Administratoren und Verantwortliche in Unternehmen, die für die Beschaffung und das Rollout von Android-Geräten ...

Sicherheit

Intel gibt neue Spectre V2-Microcode-Updates frei (20.02.2018)

Information von kgborn vor 17 StundenSicherheit

Intel hat zum 20. Februar 2018 weitere Microcode-Updates für OEMs freigegeben, um Systeme mit neueren Prozessoren gegen die Spectre ...

Microsoft
ARD-Doku - Das Microsoft Dilemma
Tipp von Knorkator vor 20 StundenMicrosoft3 Kommentare

Hallo zusammen, vor einigen Tagen lief in der ARD u.a. Reportage. Das Youtube Video dazu dürfte länger verfügbar sein. ...

Heiß diskutierte Inhalte
Windows Server
AD DS findet Domäne nicht, behebbar?
Frage von schapitzWindows Server40 Kommentare

Guten Tag, ich habe bei einem Kunden ein Problem mit den AD DS. Umgebung ist folgende: Windows Server 2016 ...

Router & Routing
LANCOM VPN CLIENT einrichten
Frage von Finchen961988Router & Routing27 Kommentare

Hallo, ich habe ein Problem und hoffe ihr könnt mir helfen, wir haben einen Kunden der hat einen Speedport ...

Router & Routing
ISC DHCP 2 Subnetze
gelöst Frage von janosch12Router & Routing19 Kommentare

Hallo, ich betreibe bei mir im Netzwerk einen ISC DHCP Server auf Debian, der DHCP verwaltet aktuell ein /24 ...

Switche und Hubs
Cisco SG350X-48 AdminIP in anderes VLAN
Frage von lcer00Switche und Hubs14 Kommentare

Hallo zusammen, ich habe ein Problem mir einem Cisco SG350X-48 bei der Erstinstallation wurde eine IP 192.168.0.254 (Default VLAN ...