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:

Code: Alles auswählen

which ghostscript
/usr/bin/ghostscript

Code: Alles auswählen

which pdfunite
/usr/bin/pdfunite
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.