ich möchte gerne mit der folgenden Funktion per Batch PDF Dateien aus einem Ordner in einer neuen Datei zusammenfügen.
Option Explicit
Sub Aufruf_mergePDFviaGhostScript()
Call mergePDFviaGhostScript("C:\Users\Public\Testdaten\PDF\", "C:\Users\Public\Testdaten\ _
PDFmerge.pdf")
End Sub
Function mergePDFviaGhostScript(ByVal original_PDF_Ordner As String, ByVal _
Dateiname_und_Pfad_PDFmerge As String)
Dim PDFdatei2merge, batch_mergePDFviaGhostScript As String
Dim PDFdatei As File
Dim Erstellen As Long
For Each PDFdatei In GetFiles(original_PDF_Ordner, True, "*.pdf")
PDFdatei2merge = PDFdatei2merge & " " & PDFdatei.Path 'Dateinamen für Batch zusammensetzen
Erstellen = 1 'Freigabe für Batch
Next
If Erstellen = 1 Then
batch_mergePDFviaGhostScript = "C:\Program Files\gs\gs9.04\bin\gswin32c.exe -dNOPAUSE - _
sDEVICE=pdfwrite -sOUTPUTFILE=" & Dateiname_und_Pfad_PDFmerge & " -dBATCH" & PDFdatei2merge
Call Shell(batch_mergePDFviaGhostScript)
Else
MsgBox "Keine PDF-Dateien zum zusammenfügen vorhanden!", vbCritical, " _
mergePDFviaGhostScript"
End If
End Function
Das Script funktioniert auch soweit. Jedoch läuft es nicht, wenn in einem Dateinamen ein Leerzeichen enthalten ist (im Batch-Befehl werden die Dateinamen der Dateien, die zusammengeführt werden, durch Leerzeichen getrennt
Beispiel Batch:
C:\Program Files\gs\gs9.04\bin\gswin32c.exe -dNOPAUSE -sDEVICE=pdfwrite -sOUTPUTFILE=E:\Ausgabe.pdf -dBATCH E:\1.pdf E:\2.pdf
).
Wie kann man so ein Problem am besten umgehen? Dazu habe ich mir zwei Ansätze überlegt:
1.) Dateinamen auslesen - Dateinamen zwischenspeichern - Datei für die Funktion umbennnen - anschließened Originaldateinamen wieder herstellen
2.) Kopie in einem temporärem Verzeichnis erstellen - Datei umbennen - Funktion ausführen - tempöräre Daten löschen
Oder geht so etwas evtl. über einen anderen Ansatz viel einfacher.
Über eine Hilfestellung wäre ich sehr dankbar.
Gruß Andy