PDFs mit unterschiedlicher Stückzahl mergen

Stelle Fragen zur Programmierung mit Autohotkey

Moderator: jNizM

Werniman
Posts: 3
Joined: 01 Jul 2017, 14:13

PDFs mit unterschiedlicher Stückzahl mergen

03 Aug 2017, 10:15

Hallo!
Im Job müssen wir jeden Tag Daten aus unserem Ticketsystem in ein Formular auf der Webseite eines Kunden übertragen. Eine sehr eintönige Arbeit, zumindest für das Übertragen der Texte aus dem Ticket in die Eingabemaske des Kunden helfe ich mir da schon mit einem MouseRecording-Programm. Leider ist das noch nicht alles.
Zu jedem Ticket liegen zusätzlich eine oder mehrere PDF-Files vor,die wir aus dem Ticketsystem heraus auf die HDD speichern und dann mit dem Programm "PDFTools" (ist ein Teil vom PDF-XChange) zu einer einzelnen Datei mergen müssen,welche dann mit auf die Webseite des Kunden hochgeladen wird. PDFTools ist dabei so konfiguriert,daß es den Namen der ersten Quelldatei als Zieldateiname übernimmt und die Zieldatei dann in einen eigenen Ordner verschiebt.

Vor dem Vorgang habe ich also ein Quellverzeichnis,welches etwa so aussieht:
12345.pdf
12345_b.pdf
12345_c.pdf
67890.pdf
67890_b.pdf

Im Zielordner liegen dann nur noch die Dateien 12345.pdf und 67890.pdf.

Das kann man entweder über eins der vielen Tools mit grafischer Oberfläche machen (wie wir bisher mit PDFTools) oder man nutzt ein Kommandozeilentool wie pdftk. Muss man das mehrere dutzend mal pro Tag machen,ist das aber ganz schön nervig.
Mit pdftk kann man mehrere pdfs mit der folgenden Syntax zusammenfügen: pdftk.exe quelldatei1.pdf quelldatei2.pdf output zieldatei.pdf. Will man nicht jede Quelldatei von Hand eingeben,kann man auch mit Platzhaltern arbeiten, müsste aber trotzdem noch den vollständigen Namen der Zieldatei eingeben: pdftk.exe 123*.pdf output 12345_fertig.pdf würde folglich alle PDF-Files,die mit 123 beginnen,zu einer einzigen Zieldatei zusammenbasteln.

Nun habe ich überlegt, ob man nicht Autohotkey nutzen könnte,um diesen ganzen Vorgang zu automatisieren. Ich hab nur das Problem,daß ich im Bereich Autohotkey blutiger Anfänger bin und keinen Plan habe, wie ich das umsetzen soll.
Im Grunde bräuchte ich also ein Script, welches pdftk mit den Namen der PDF-Files füttert, der Zieldatei den Namen der ersten Quelldatei gibt und diese in den Zielordner speichert/verschiebt. Und das natürlich je nach Namen der Quelldateien in eigene Zieldateien (d.h. wenn sich die Zahl im Namen der Quelldateien ändert,soll auch eine neue Zieldatei angelegt werden).
Hat da jemand eine Idee,wie man das umsetzen kann ?
garry
Posts: 3763
Joined: 22 Dec 2013, 12:50

Re: PDFs mit unterschiedlicher Stückzahl mergen

03 Aug 2017, 15:29

Idee , drag&drop pdf-files und zusammenfügen mit pdftk.exe
erstellt Ordner anhand erster pdf-filename und fügt pdf-files zusammen zu combined_%erstername%.pdf

Code: Select all

setworkingdir,%a_scriptdir%
filename1=PDF-Combine pdftk.exe
;PR=C:\M_SmallPrograms\pdftk\pdftk.exe
PR=%a_scriptdir%\pdftk.exe
extensions:="pdf"
loop,%PR%                                        ;- create program shortpath
   SPR1= %A_loopFileShortPath%

Gui,2: Font, default, FixedSys
Gui,2:add,button  , x840 y15 h22 w100  gStart1        ,Start
Gui,2:Show, x50 y10 w970 h150,%Filename1%
Gui,2:add,edit    , x10  y10 h130 w820 cGray  vF1,
return

2Guiclose:
exitapp
;=========================================
2GuiDropFiles:
Loop, parse, A_GuiEvent, `n
   {
   guicontrolget,F1
   GuiControl,2:,F1,%f1%%A_LoopField%`n
   }
return
;----------------------------------------
start1:
Gui,2:submit,nohide
e=
i=0
Loop,parse,F1,`n
{
SplitPath,A_LoopField, name, dir, ext, name_no_ext, drive
if ext in %Extensions%
    {
    i++
    if (i=1)
       {
       destfile  =Combined_%name_no_ext%
       destfolder=%name_no_ext%
       }
    loop,%a_loopfield%
      SFL1= %A_loopFileShortPath%
    e .=  SFL1 . " "
    }
}
;msgbox,%e%
if e<>
  {
  ifnotexist,%destfolder%
     filecreatedir,%destfolder%
  dest=%destfolder%\%destfile%.pdf
  ifnotexist,%dest%
    fileappend,,%dest%                              ;- create empty destxy.pdf
  loop,%dest%
     SDD1=%A_loopFileShortPath%                     ;- shortpath from destxy.pdf
  ;msgbox,"%spr1%" %e% output %sdd1%
  ;runwait,%comspec% /k "%spr1%" %e% output %sdd1%  ;- see error
  runwait,"%spr1%" %e% output %sdd1%,,hide          ;- run hidden
  run,%sdd1%                                        ;- open created new merged pdf-file
  }
return
;======================================================================

Return to “Ich brauche Hilfe”

Who is online

Users browsing this forum: No registered users and 40 guests