Set WshShell = CreateObject ("WScript.Shell") set Ag = WScript.Arguments
dim myPath dim myFile, TargetFile dim i Dim sQuote
sQuote=""""
myPath = getPath(Ag(0))
if (ag.count-1) > 0 then
for i= 0 to ag.count -1 myfile = myfile & sQuote & ag(i) & sQuote & " " next
myFile = trim(myFile)
TargetFile = Inputbox ("Geben Sie bitte eine Dateibezeichnung ein.","Zusammenfügen PDF mit PDFtk","Merge_Output.pdf")
If TargetFile ="" then Msgbox "Sie haben den Vorgang abgebrochen.",0, "Abbruch Mergen" else TargetFile = AddExtension(TargetFile,".pdf") Wshshell.run """C:KanzleiSoftwareFreePDF_Multidocpdftk.exe """ & myFile & " cat output " & sQuote & myPath & TargetFile & sQuote End If
'Hilfsfunktionen Function GetPath(strFile) GetPath=left(Ag(0),InStrRev(strFile,"",-1,1)) End Function
Function AddExtension(strFile,Extension) If lcase(right(strFile,Len(Extension)))lcase(Extension) then AddExtension=strFile & Extension Else AddExtension=strFile End if End Function
Bitte die Pfade anpassen. PDFtk muss sich auf einem lokalen Laufwerk befinden. Kopiert Euch PDFtk am besten in das Verzeichnis von FreePDF bzw. FreePDF_Multidoc.
Bei Problemen oder Fragen bitte hier einfach im Forum melden.
Die Quelldateien können sich auch auf einem Netzlaufwerk befinden. Bei meinen Test's handelt es sich allerdings um gemappte Laufwerke, also z. B. L:. Wie es sich bei sog. UNC-Pfaden (\Server...) verhält kann ich nicht abschließend sagen.
Die Verwendung geschieht auf eigene Verantwortung. Gruß Ahmed
FreePDF_Multidoc (PS2PDF mit vielen Optionen f. FreePDF) File2PDF (komplette Verzeichnisse auf einen Streich umwandeln) findest Du alles hier: http://amTools.de
heute hatte ich festgestellt, dass ich mit dem oben vorgestellten Code PDF-Dateien aus dem Netz doch nicht mit PDFtk mergen kann. Das hatte ja auch früher mit PDF_ReOrg nicht funktioniert. Warum es aber vorher kurzeitig funktionierte, kann ich nicht sagen.
Ist ja auch egal. Hier habt Ihr jetzt die endgültige Lösung. Alle PDF-Dateien werden in das User-Tmp-Verzeichnis kopiert und dort erst zusammengefasst. Anschließend wird die Zieldatei in das Zielverzeichnis verschoben.
for i= 0 to ag.count -1 fso.CopyFile ag(i), tmpFolder & "" & "tmp_" & left("00000",5-len(i)) & (i+1) & ".pdf" myfile = myfile & sQuote & tmpFolder & "" & "tmp_" & left("00000",5-len(i)) & (i+1) & ".pdf" & sQuote & " " next
myFile = trim(myFile)
do if TargetFile "" then msgbox "Die Zieldatei `" & myPath & TargetFile & "' existiert bereits." & vbnewline & "Bitte vergeben Sie einen neuen Dateinamen." TargetFile="" End if
TargetFile = Inputbox ("Geben Sie bitte eine Dateibezeichnung ein.","Zusammenfügen PDF mit PDFtk","Merge_Output.pdf")
If TargetFile ="" then Msgbox "Sie haben den Vorgang abgebrochen.",0, "Abbruch Mergen" exit do else TargetFile = AddExtension(TargetFile,".pdf") End If
loop while fso.FileExists(myPath & TargetFile)
Wshshell.run """C:KanzleiSoftwareFreePDF_Multidocpdftk.exe """ & myFile & " cat output " & sQuote & tmpFolder & "" & TargetFile & sQuote
do while fso.FileExists(tmpFolder & "" & TargetFile) =false wscript.sleep 500 '1/2 sec. warten loop
fso.MoveFile tmpFolder & "" & TargetFile, myPath & TargetFile wscript.sleep 100 call CleanFolder(tmpFolder) Else msgbox "Sie müssen mind. 2 Dateien zum zusammenfügen auswählen.",0,"Abbruch Mergen"
End if
'Hilfsfunktionen Function GetPath(strFile) GetPath=left(Ag(0),InStrRev(strFile,"",-1,1)) End Function
Function AddExtension(strFile,Extension) If lcase(right(strFile,Len(Extension)))lcase(Extension) then AddExtension=strFile & Extension Else AddExtension=strFile End if End Function
Function CleanFolder(strFolder) For Each file In fso.GetFolder(strFolder).Files file.delete Next End Function
Weiterhin viel Spaß.
Gruß Ahmed
FreePDF_Multidoc (PS2PDF mit vielen Optionen f. FreePDF) File2PDF (komplette Verzeichnisse auf einen Streich umwandeln) findest Du alles hier: http://amTools.de