Zwei oder mehrere PDF-Dateien in eine Datei zusammenfügen

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
maddinvonfritz
Beiträge: 14
Registriert: 15.11.2023 16:53

Zwei oder mehrere PDF-Dateien in eine Datei zusammenfügen

Beitrag von maddinvonfritz »

Hallo,

kennt jemand eine Möglichkeit unter PB zwei vorhandene PDF Dateien in einer PDF Datei zu speichern.
jogo
Beiträge: 127
Registriert: 22.11.2020 20:05
Computerausstattung: 'ne Handvoll gebrauchte Laptops & PCs mit Mint und LMDE

Re: Zwei oder mehrere PDF-Dateien in eine Datei zusammenfügen

Beitrag 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
--
Ideen gibt es viele - man muss sie nur haben...
Mint / LMDE5+6 // PureBasic 6.21
jogo
Beiträge: 127
Registriert: 22.11.2020 20:05
Computerausstattung: 'ne Handvoll gebrauchte Laptops & PCs mit Mint und LMDE

Re: Zwei oder mehrere PDF-Dateien in eine Datei zusammenfügen

Beitrag 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.
--
Ideen gibt es viele - man muss sie nur haben...
Mint / LMDE5+6 // PureBasic 6.21
jogo
Beiträge: 127
Registriert: 22.11.2020 20:05
Computerausstattung: 'ne Handvoll gebrauchte Laptops & PCs mit Mint und LMDE

Re: Zwei oder mehrere PDF-Dateien in eine Datei zusammenfügen

Beitrag 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>
--
Ideen gibt es viele - man muss sie nur haben...
Mint / LMDE5+6 // PureBasic 6.21
Benutzeravatar
maddinvonfritz
Beiträge: 14
Registriert: 15.11.2023 16:53

Re: Zwei oder mehrere PDF-Dateien in eine Datei zusammenfügen

Beitrag von maddinvonfritz »

Vielen Dank für die ganzen Ideen. Ich schaue sie mir diese Wochenende Mal an.
Antworten