Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Wie via VBA-Script mehrere PDF-Dateien aus einer PDF-Datei erstellen ?

Begonnen von Tom75, Oktober 29, 2024, 12:43:27

⏪ vorheriges - nächstes ⏩

PhilS

Zitat von: Tom75 am Oktober 30, 2024, 10:59:41Was ich möchte ist aber, das aus 1 PDF-Dokument die Seiten 2,4,9,36 in ein eigenes PDF-Dokument gedruckt werden.
OK. Das habe ich missverstanden.

Dann zuerst -splitByPage und im Anschluss -join.
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

Tom75

Ich habe nun die nach folgende Zeile zusammengetragen. Jedoch wird mir mit diesem im Ordner Exporte ein Ordner namens "test2.pdf" erstellt und in diesen ALLE einzelne Seiten als eigene PDF-Datei erstellt. Das ist es leider auch nicht wie ich es benötige.


Shell "C:\Program Files\PDF24\pdf24-DocTool.exe " & " -splitByPage 2,4,9,36 " & "C:\Exporte\Tiergarten.pdf" & " -outputFile " & "C:\Exporte\test2.pdf"

Ich benötige aus dem aufgerufenen PDF-Dokument "C:\Exporte\Tiergarten.pdf" ausschliesslich die Seiten 2,4,9,36 ... die dann in der Datei namens test2.pdf im Ordner "C:\Exporte\" abgespeichert werden soll.

PhilS

Zitat von: Tom75 am Oktober 30, 2024, 11:16:08Ich benötige aus dem aufgerufenen PDF-Dokument "C:\Exporte\Tiergarten.pdf" ausschliesslich die Seiten 2,4,9,36 ... die dann in der Datei namens test2.pdf im Ordner "C:\Exporte\" abgespeichert werden soll.
Schon verstanden.
Ich schrieb:

ZitatDann zuerst -splitByPage und im Anschluss -join
Mit -splitByPage teilst du das bestehende Dokument in (alle) einzelnen Seiten auf. - Das hast du jetzt gemacht.
Im nächsten Schritt fügst du dann die gewünschten Seiten mit -join zu einem neuen PDF zusammen.
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

Knobbi38

Hallo Tom,

vergiss PDF24, weil die -splitByPage Option ein Dokument nach jeder Seite aufteilt. Das Tool kann eine Menge, aber eben genau das nicht, was du vor hast, zumindest nur sehr umständlich:
Du müsstest alle Seiten-Dateien in ein Temp-Verzeichnis ausgeben, dir dann die Dateien wieder zusammen suchen und die Dateinamen in ein Textfile schreiben und anschließend PDF24 mit join und auf diese Textdatei mit der Profile-Option (glaube ich zumindest) verweisen.  Anschließend das Temp-Verzeichnis samt Inhalt wieder löschen, nicht vergessen!

Gruß
Knobbi38

Tom75

Hallo zusammen, danke für Eure Tipps.

Ich hab jetzt mal folgende 2 Zeilen erstellt und meine Kommtare darunter geschrieben.

    Shell "C:\Program Files\PDF24\pdf24-DocTool.exe " & "C:\Exporte\Tiergarten.pdf" & " -splitByPage " & " -outputFile " & "C:\Exporte\Seite"
' komisch das hier ein Ordner namens "Seite.pdf" erstellt wird
    Shell "C:\Program Files\PDF24\pdf24-DocTool.exe " & Chr(34) & " -join -profile " & Chr(34) & "default/good" & "-outputFile " & Chr(34) & "C:\Exporte\Hund.pdf" & Chr(34) & "C:\Exporte\Seite.pdf\Seite-0013.pdf C:\Exporte\Seite.pdf\Seite-0014.pdf"
' Fazit des 2. Codes ... es passiert nichts, wobei die beiden zu druckenden Seiten im erstellten Ordner vorhanden sind.

Knobbi38

Hallo Tom,

du kannst doch nicht einfach eine neue Syntax erfinden. Was bitte schön sollen den die Dateiangaben hinter -outfile bewirken?

Lese die im Manual nochmal genau durch, wie das mit der Option -profile gehandhabt wird.


Tom75

Ich habe das mit -Profil jetzt mal weggelassen.

Die Pfadangaben hinter -outputFile sind doch Angaben für die zu erstellende Datei und die Dateien aus denen diese besteht. Die Syntax dafür hatte ich mir aus dem Forum gezogen:
https://help.pdf24.org/de/fragen/frage/pdf24-doctool-join-stdout/
https://help.pdf24.org/de/fragen/frage/profil-uebergabe-funktioniert-nicht/

pdf24-DocTool.exe -join [-sort] [-bookmarks bookmarksCmd] [-profile profileId] [-outputDir dir] [-outputFile file] file1 [file2] ...
Quelle: https://creator.pdf24.org/manual/11/#111-command-line

Shell "C:\Program Files\PDF24\pdf24-DocTool.exe " & Chr(34) & " -join " & "-outputFile " & Chr(34) & "C:\Exporte\Hund.pdf" & Chr(34) & "C:\Exporte\Seite.pdf\Seite-0013.pdf C:\Exporte\Seite.pdf\Seite-0014.pdf"

Tom75

Mit dem folgenden Code klappt nun die Zusammenstellung der Seite 13 und 14 in die separate PDF-Datei.
Allerdings wird die Datei nur als "Hund.pdf" und nicht als "Hund gross.pdf" gespeichert.
Wie muss man das noch im Code ergänzen ?

Shell "C:\Program Files\PDF24\pdf24-DocTool.exe -join -profile default/good -outputFile C:\Exporte\Hund gross.pdf C:\Exporte\Seite.pdf\Seite-0013.pdf C:\Exporte\Seite.pdf\Seite-0014.pdf"

MzKlMu

Hallo,
probiere mal mit Hochkomma um "Hund gross.pdf".
Es wäre aber wahrscheinlich sinnvoller auf das Leerzeichen zu verzichten oder wenigstens den Unterstrich zu verwenden. Ggf. funktioniert auch ein Bindestrich.
Gruß Klaus

Tom75

Hallo Klaus,

mir ist bekannt das Leerzeichen in Pfaden und Dateinamen zu Problemen führen können, daher habe ich in der Zwischenzeit bereits einige Versuche unternommen, jedoch führte nichts zum gewünschten Ergebnis auch nicht mit nur Hochkommas. :(
u.a. auch wie folgt

... C:\Exporte\" & "'Hund gross.pdf'" & " C:\Exporte\ ...
... C:\Exporte\" & "'Hund & Chr(34) & gross.pdf'" & "C:\Exporte\ ...

PhilS

Zitat von: Tom75 am Oktober 30, 2024, 15:08:34u.a. auch wie folgt
... C:\Exporte\BABs\" & "'Hund gross.pdf'" & " C:\Exporte ...
Hochkommas sind hier eher nicht die richtige Wahl, nimm normale Anführungszeichen, wie du es für den Pfad zu der .exe-Datei mit Chr(34) bereits getan hast.
Außerdem muss der komplette Pfad in Anführungszeichen eingeschlossen werden und nicht nur der Dateiname für sich.
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

Tom75

Auch damit scheint's nicht so wirklich zu klappen ... es wird nur als "Hund.pdf" gespeichert

    Shell "C:\Program Files\PDF24\pdf24-DocTool.exe & Chr(34) & -join -profile default/good & Chr(34) & -outputFile C:\Exporte\" & "Hund gross.pdf" & "C:\Exporte\Seite.pdf\Seite-0013.pdf C:\Exporte\Seite.pdf\Seite-0014.pdf"

PhilS

Zitat von: Tom75 am Oktober 30, 2024, 15:28:47Auch damit scheint's nicht so wirklich zu klappen ... es wird nur als "Hund.pdf" gespeichert
Du hast nicht gemacht, was ich empfohlen hatte:


Zitat... muss der komplette Pfad in Anführungszeichen eingeschlossen werden...

Außerdem fehlt da ein Leerzeichen zwischen der Ausgabedatei und der ersten Input-Datei.
Also:
.... -outputFile "  & Chr(34) & "C:\Exporte\Hund gross.pdf" & Chr(34) & " C:\Exporte\Seite.pdf\.... 


PS:
Bei solchen Problem ist es hilfreich erstmal nur die Befehlszeile in einem Texteditor zu schreiben und dann manuell auszuführen.
Erst wenn das funktioniert, baust du dieselbe Befehlszeile in VBA auf und vergleichst das Ergebnis (siehe Debug.Print) mit deiner manuell erstellten, funktionieren Befehlszeile .
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

Tom75

Ich werd' nicht schlau draus und finde den Fehler nicht und seh den Wald vpr lauter Bäumen nicht mehr.  :(


    Shell "C:\Program Files\PDF24\pdf24-DocTool.exe & Chr(34) & -join -profile default/good & Chr(34) & -outputFile C:\Exporte\Hund gross.pdf & Chr(34) & C:\Exporte\Seite.pdf\Seite-0013.pdf & Chr(34) & C:\Exporte\Seite.pdf\Seite-0014.pdf"

PhilS

Zitat von: Tom75 am Oktober 30, 2024, 15:43:08... finde den Fehler nicht ...
Für den Teil den ich dir vorgegeben hatte, ist der Unterschied doch recht offensichtlich.

Probier doch erstmal diese Befehlszeile manuell, d.h. z.B. in cmd.exe:
"C:\Program Files\PDF24\pdf24-DocTool.exe" -join -profile "default/good" -outputFile "C:\Exporte\Hund gross.pdf" "C:\Exporte\Seite.pdf\Seite-0013.pdf" "C:\Exporte\Seite.pdf\Seite-0014.pdf"
Wenn die funktioniert, bau dasselbe in VBA auf.
 
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor