Seite 1 von 1
Zwei oder mehrere PDF-Dateien in eine Datei zusammenfügen
Verfasst: 15.09.2025 05:01
von maddinvonfritz
Hallo,
kennt jemand eine Möglichkeit unter PB zwei vorhandene PDF Dateien in einer PDF Datei zu speichern.
Re: Zwei oder mehrere PDF-Dateien in eine Datei zusammenfügen
Verfasst: 16.09.2025 17:03
von jogo
es gibt PdfVectorOutput(), NewVectorPage() usw.. Damit kann man mehrere erstellte Seiten zu einer .pdf Datei erzeugen. Ich weiß aber nicht, ob und wie man vorhandene .pdf Dateien in diese Pages laden kann.
Alternativ (falls dies nicht direkt mit PB ohne weiteres geht) könntest du ein Kommandozeilen-Tool verwenden, welches du dann mit RunProgram() steuern kannst.
Ein solches Tool wäre zB. PDFtk (PDF Toolkit). Gibt es in den offiziellen Quellen. Hier gibt es Infos dazu:
https://de.linux-terminal.com/?p=1745
Re: Zwei oder mehrere PDF-Dateien in eine Datei zusammenfügen
Verfasst: 16.09.2025 17:37
von jogo
gibt auch noch weitere interessante Kommandozeilen-Tools. Werden auch auf der Seite weiter unten kurz vorgestellt.
Hab festgestellt, daß bei mir (LMDE6) die Tools ghostscript und pdfunite bereits vorhanden waren. Dann ersparst du dir die Installation von PDFtk - obwohl das ja in 5 Sekunden erledigt ist...
Kannste rausfinden mit dem Terminalbefehl which:
Wenn vorhanden, antwortet which mit dem Pfad des gesuchten Programms, ansonsten kommt nix.
Re: Zwei oder mehrere PDF-Dateien in eine Datei zusammenfügen
Verfasst: 16.09.2025 20:01
von jogo
hab das mal mit pdfunite getestet:
Code: Alles auswählen
EnableExplicit
;thema: fremdprogrammstart // hier: mit pdfunite (oder weitere Programme) vorhandene .pdf-Dateien verbinden
;- declarationen
Global.i ev ;integer
Global.s pvz ;string
#_k_program_1 = "pdfunite"
#_K_befehl_1 = "test1.pdf test2.pdf ziel_1.pdf"
Procedure ruf_auf(pn.s,pr.s)
;startet ein script oder programm & gibt ggf. den ausgabe & exitcode zurück / param: programm-name | parameter(kann auch der name/pfad eines weiteren programms/scripts sein)
Define ausgabe.s,pnr.i
pnr = RunProgram(pn, pr, "", #PB_Program_Open | #PB_Program_Read)
ausgabe = ""
If pnr ;wenn programmstart gelungen
While ProgramRunning(pnr)
If AvailableProgramOutput(pnr) ;falls das aufgerufene Programm Meldungen ausgibt
ausgabe + ReadProgramString(pnr) + Chr(13)
EndIf
Wend
ausgabe + Chr(13) + Chr(13)
CloseProgram(pnr) ; Schließt die Verbindung zum Programm
EndIf
Debug "Output:"+ ausgabe
EndProcedure
;-fensterelemente
If OpenWindow(0, 200, 200, 200, 100, "Test", #PB_Window_ScreenCentered)
If CreateMenu(0, WindowID(0)) ; hier beginnt das Erstellen des Menüs...
MenuTitle("Testmenü")
MenuItem(1, "PDF-Verbinden")
MenuItem(2, "Weiterer Test")
EndIf ;ob menü ok
EndIf ;ob fenster ok
;-hauptprogramm
pvz = GetPathPart(ProgramFilename()) ;Programmverzeichnis speichern
SetCurrentDirectory(pvz) ;aktuelles programmverzeichnis ermitteln und als aktives verzeichnis setzen
;-ereignisschleife
Repeat
ev = WaitWindowEvent() ; überprüfe Window-Ereignisse
Select ev
Case #PB_Event_CloseWindow ; wenn x
Debug "ende"
Break
Case #PB_Event_Menu ; ein Eintrag des Popup-Menüs wurde angeklickt
Select EventMenu() ; ermittle den angeklickten Menü-Eintrag...
Case 1
Debug "Verbinden:"
ruf_auf(#_k_program_1,#_K_befehl_1)
Debug "Fertig"
Case 2
Debug "Dideldum"
EndSelect ;welcher menüpunkt
EndSelect ;welches ereignis
ForEver
End
;notitzen:
;falls pdfunite nicht vorhanden: sudo apt install poppler-utils
;Usage: pdfunite [options] <PDF-sourcefile-1>..<PDF-sourcefile-n> <PDF-destfile>
Re: Zwei oder mehrere PDF-Dateien in eine Datei zusammenfügen
Verfasst: 20.09.2025 10:54
von maddinvonfritz
Vielen Dank für die ganzen Ideen. Ich schaue sie mir diese Wochenende Mal an.