Bestimmtes PDF automatisiert in ein anderes PDF einfügen und speichern

  • Ich finde Deine Einstellung super. :thumbup:

    Habe Dich schon in die Richtung verstanden und bin auf jeden Fall Dankbar auch für die schon geleistete Hilfe.

    Ich wäre wirklich gerne auf der "guten Seite" der Programmierer. Da scheitert es aber an Talent und an Zeit. Der Tag hat einfach zu wenig Stunden und ich habe wirklich andere stärken.

    Und dann ist da noch die Erinnerung an letztes Mal: Ich büffel Stunden lang die Hilfe, denke wow ich mache echt Fortschritte und dann kommt ein sowas von viel besseres skript und ich kann meins komplett in die Tonne kloppen. Versteht mich nicht falsch. Ich bin sehr zufrieden mit der viel besseren Lösung. Ich hätte das auch nie so hinbekommen, never! Daher ist das völlig in Ordnung und sollte nicht als "Siehst Du, dann lernen die das nicht mehr selber" angesehen werden.

    Ebenfalls ein Problem. Ich bekomme keine Routine da ich es einfach viel zu selten brauche. Daher fange ich jedesmal wieder fast von vorne an.

    Meistens macht es mir Freude mit Autoit rumzuspielen und ein neues kleines "Projekt" anzugehen, ohne Zeitdruck. Dieses mal habe ich sonst schon zu viel um die Ohren. Daher kommen immer Gedanken auf wie: Ich darf nicht zu viel Zeit reinstecken und sollte anderes priorisieren. Frag doch mal was es kosten würde wenn es Dir jemand skriptet anstelle der Spende fürs Forum. Soll ich es doch per Microsoft Power Automate for desktop versuchen da es eine GUI für Laien wie mich hat?

    Eigentlich schade. Vielleicht sollte ich es weiterhin manuell machen bis ich genügend Zeit habe mich der Thematik richtig zu widmen.

    Sorry für das viele Offtopic.

    Ich habe jetzt mal angefangen Dein skript mit ;Kommentaren zu versehen was gerade passiert um ein besseres Bild zu bekommen.

    Gerne werde ich Deine Tipps betreffend "Frage mit Scriptansatz (lauffähig) und allen (auch Demo-Dateien)" berücksichtigen.

    Sauber bleiben.

  • wir haben die Rubrik „Programmieranfrage mit Gegenleistung“ vielleicht findet sich da jemand der dir das programmiert. ;)

    Mit Gegenleistung

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ! lauffähiges ! Script, dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

  • ich habe zumindest herausbekommen, dass Nitro PDF auch über die Cmd angesprochen werden kann um pdf Dateien zu mergen.

    siehe: https://community.gonitro.com/topic/15158-li…ers-and-syntax/

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ! lauffähiges ! Script, dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

  • Ich verwende für solche Aufgaben PDFSam: https://pdfsam.org/faq/

  • wir haben die Rubrik „Programmieranfrage mit Gegenleistung“ vielleicht findet sich da jemand der dir das programmiert. ;)

    Hast schon recht. Ich kann nicht so viel dazu beitragen weil zu wenig skill. Also gehört es eher da hin.

    Ich verwende für solche Aufgaben PDFSam: https://pdfsam.org/faq/

    Danke für den Hinweis. Das würde natürlich auch gehen anstelle von Nitro PDF. Bei Nitro gehts ja lediglich ums zusammenführen. Welche Software das macht ist am Ende schnuppe.

    Sauber bleiben.

  • Wie steht Ihr eigentlich zum Thema chatgpt? Ich hoffe ich darf das posten, ist ja gekennzeichnet. Ansonsten löschen Danke.

    Ich habe es heute zum ersten Mal ausprobiert und muss sagen ich bin echt erstaunt. Mit einer so guten Antwort auf die erste Frage hätte ich nicht gerechnet.

    Gut... kann mir ja alles erzählen. Das muss ich erstmal testen.

    Frage / Antwort

    ich möchte zwei PDF-Files automatisch zusammenfügen. Das sollte abhängig vom Namen passieren. Kannst du mir ein script dazu in der autoit sprache programmieren?


    Natürlich kann ich Ihnen dabei helfen! Hier ist ein Beispiel für ein AutoIt-Skript, das zwei PDF-Dateien basierend auf ihren Namen automatisch zusammenfügt:

    autoit
    #include <Array.au3>
    #include <File.au3>
    #include <WinAPIFiles.au3>

    Local $folderPath = "Pfad_zum_Ordner" ; Geben Sie den Pfad zum Ordner ein, in dem sich die PDF-Dateien befinden
    Local $outputFileName = "Ausgabedatei.pdf" ; Geben Sie den Namen der Ausgabedatei ein

    Local $fileList = _FileListToArray($folderPath, "*.pdf", 1) ; Liste aller PDF-Dateien im Ordner

    If @error Then
    MsgBox(16, "Fehler", "Es wurden keine PDF-Dateien gefunden.")
    Exit
    EndIf

    Local $mergedPDF = ObjCreate("AcroExch.PDDoc")
    Local $srcPDF = ObjCreate("AcroExch.PDDoc")

    For $i = 1 To $fileList[0]
    If StringInStr($fileList[$i], "Name1") Or StringInStr($fileList[$i], "Name2") Then ; Hier können Sie die Namen anpassen, nach denen Sie suchen möchten
    $srcPDF.Open($folderPath & "\" & $fileList[$i])
    $mergedPDF.InsertPages(-1, $srcPDF, 0, $srcPDF.GetNumPages(), 0)
    $srcPDF.Close()
    EndIf
    Next

    $mergedPDF.Save(1, $folderPath & "\" & $outputFileName)
    $mergedPDF.Close()

    MsgBox(64, "Erfolg", "Die PDF-Dateien wurden erfolgreich zusammengefügt.")


    Bitte stellen Sie sicher, dass Sie die AutoIt-Sprache und die erforderlichen Bibliotheken installiert haben, um das Skript auszuführen. Passen Sie den Pfad zum Ordner und die Namen der PDF-Dateien an, nach denen Sie suchen möchten. Nachdem das Skript ausgeführt wurde, wird die Ausgabedatei im angegebenen Ordner erstellt.

    Sauber bleiben.

  • nun,

    die Code Ergebnisse sind grundsätzlich als Einstieg manchmal anwendbar.

    In diesem Fall braucht man aber einen installierten Adobe Acrobat.

    Solche Feinheiten werden dann aber verschwiegen.

    Und grundsätzlich bringt es den Fragesteller auch nicht wirklich weiter. Wer nicht versteht wie das Skript arbeitet, wird es ohne die Abhängigkeit zu kennen auch nicht zum Laufen bringen. Und wer es versteht, der schreibt es mal eben schnell selber.

    Ich halte von diesen "Antwort-Maschinen" gar nichts.
    Besonders wie du selber schon geschrieben hast: Prüfen musst du es trotzdem...

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ! lauffähiges ! Script, dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

  • Ich denke auch. Als unterstützung oder für die Basis sicher noch hilfreich. Wenn es dann ins Detail geht wird es vermutlich schwieriger.

    Es ist eine Lösung in Arbeit Ihr braucht Euch also nicht mehr zu bemühen. Vielen Dank nochmal für alle Inputs!

    Vielleicht darf ich das Skript dann auch hier reinschreiben dass auch andere von profitieren können. Ist noch in Abklärung.

    Sauber bleiben.

    Einmal editiert, zuletzt von Swiffer (23. Januar 2024 um 11:24)

  • Vielleicht darf ich das Skript dann auch hier reinschreiben dass auch andere von profitieren können. Ist noch in Abklärung.

    Wäre sehr schön wenn Du die Lösung später hier für alle zur Verfügung stellst. So haben, wie Du ja selber schreibst, alle etwas davon.

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • Hallo Swiffer,

    so, ich hab da mal was zusammengezimmert. Aufgrund der Problematik pdf und der Umstellung auf "aus Text Datei lesen" hat es mich mehr Zeit gekostet als erwartet.

    Aber naja, das ist eher mein Problem und animiert höchstens zu einem etwas üppigeren Trinkgeld. ^^

    Also. Ich habe es jetzt so gemacht wie gewünscht.
    Ghostscript wandelt die QR-pdf in txt-Dateien. pdftoolkit merged die pdf, da nitro keinerlei Doku zu Commandline Switches oder einer API hat.
    Das Script erwartet auf dem ausführenden Rechner die Installation der 2 Programme.
    https://ghostscript.com/releases/gsdnld.html
    https://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/
    jeweils in der 32-bit Version (zwecks Kompatibilität)

    Die Pfade und so sind anpassbar.
    Probier es einfach mal aus. Hab auch so Sachen wie optionales archivieren mit reingepackt, da ich die Qualität der Daten nicht einschätzen kann.

    Natürlich kannst du mit dem Script machen was du möchtest. Es ist deins.
    Bezüglich Trinkgeld kannst du das an mein paypal schicken. (o.zimmermann@pc-wizards.de) mit der E-Mail Adresse sollte das funktionieren.
    Wie gesagt, meine "Range" kennst du. Dass ich mehr als 2-3 Std. gebraucht habe ist baer wie gesagt mein Problem.
    Bin halt ein netter Mensch ^^ wenn etwas nicht passt einfach melden ;)
    Ach ja, ein schönes Wochenende wünsche ich...

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ! lauffähiges ! Script, dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

    Einmal editiert, zuletzt von Schnuffel (27. Januar 2024 um 07:46)

  • Hallo Schnuffel

    Danke Dir für Deine tolle Arbeit! Es sieht sehr strukturiert und professionell aus.

    Leider macht der Netzwerkordner Probleme. "Der Ordner \\192.168.150.34\NAS Zuhause synch verschlüsselt\Firma\Rechnungen konnte nicht erreicht werden! Die Anwendung wird beendet."

    Ich habe 192.168.150.34 gepingt. Die Verbindung steht ohne Verluste. Dann habe ich nochmal den Netzwerk-Pfad überprüft und aus dem Explorer kopiert. Der passt und ist erreichbar.

    Jemand eine Idee um Schnuffel zu entlasten und Ihm Sein wohlverdientes Wochenende zu verschaffen? :D

    Sauber bleiben.

  • In Zeile 64 - 65 hatte sich der Fehlerteufel eingeschlichen.
    Ich habe dort nicht die IP geprüft, sondern den vollständigen Pfad.

    Ich habe die Variable in Zeile 64 und 65 ersetzt.

    AutoIt
    ;vorher:
    If DriveGetType($sPathDestinationPDF) = "Network" Then
    	If Ping($sPathDestinationPDF, 500) = 0 Then Exit MsgBox(262144 + 16, $sTitel, "Der Pfad " & $sPathDestinationPDF & " konnte nicht erreicht werden!" & @CRLF & "Die Anwendung wird beendet.")
    EndIf
    
    ;nachher:
    If DriveGetType($sDestinationIP) = "Network" Then
    	If Ping($sDestinationIP, 500) = 0 Then Exit MsgBox(262144 + 16, $sTitel, "Der Pfad " & $sDestinationIP & " konnte nicht erreicht werden!" & @CRLF & "Die Anwendung wird beendet.")
    EndIf

    Dadurch wurde nicht die IP-Adresse angepingt, sondern der vollständige Pfad. Dass ergab dann immer einen Fehler. ;)

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ! lauffähiges ! Script, dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

    Einmal editiert, zuletzt von Schnuffel (27. Januar 2024 um 07:59)

  • Gefixt Danke! Neuer Fehler:

    CTRL+F5=>Exit code: 0 Time: 0.08693

    F5=geht los
    pdf-Datei wird verarbeitet: Rechnung 2024-9055.pdf
    >Exit code: 1 Time: 3.314

    "Die Liste mit Dateien die durchsucht werden sollte, konnte nicht erstellt werden. Der Fehlercode aus _FileListArrayRec lautet:Path not found or invalid. Die Anwendung wird beendet."

    Die Archiv Ordner werden in den jeweilichen Verzeichnissen erstellt. Diese sind also richtig angegeben. Eben nochmal kontrolliert: Adresse aus .au3 kopiert und im Explorer eingegeben. Lese und Schreibzugriff vorhanden.

    Sauber bleiben.

  • AutoIt
    ersetze Zeile 21:
    Global $sPathDestinationPDF = "\\" & $sDestinationIP & "\NAS Zuhause synch verschlüsselt\Firma\Rechnungen"
    AutoIt
    mit:
    Global $sPathDestinationPDF = $sDestinationIP & "\NAS Zuhause synch verschlüsselt\Firma\Rechnungen"

    die führenden Backslashes sind unnötig.
    Da ich das immer mit lokalen Ordnern getestet habe ist das bei mir nicht aufgefallen ;)

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ! lauffähiges ! Script, dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

  • Wenn ich das so ändere bekomme ich wieder die gleiche Fehlermeldung wie zu Beginn nur ohne \\. Also: "Der Ordner 192.168.150.34\NAS Zuhause synch verschlüsselt\Firma\Rechnungen konnte nicht erreicht werden! Die Anwendung wird beendet."

    Sauber bleiben.

  • ja ja die lieben UNC-Pfade ^^

    AutoIt
    streiche im Script Zeile 70-71:
    If Not FileWrite($sPathDestinationPDF & "\Testdatei.tmp", "") Then Exit MsgBox(262144 + 16, $sTitel, "Der Ordner " & $sPathDestinationPDF & " konnte nicht erreicht werden!" & @CRLF & "Die Anwendung wird beendet.")
    FileDelete($sPathDestinationPDF & "\Testdatei.tmp")
    AutoIt
    setze im Script Zeile 70-71:
    If Not FileWrite("\\" & $sPathDestinationPDF & "\Testdatei.tmp", "") Then Exit MsgBox(262144 + 16, $sTitel, "Der Ordner " & $sPathDestinationPDF & " konnte nicht erreicht werden!" & @CRLF & "Die Anwendung wird beendet.")
    FileDelete("\\" & $sPathDestinationPDF & "\Testdatei.tmp")

    Das Problem war eigentlich nur, dass ich nicht dein Szenario in meinem IT-Umgebung nachbauen wollte.
    Da schleichen sich dann so Fehler ein.

    Sry, jetzt sollte es laufen, zumindest bei mir tut es das jetzt auch mit deinen Pfaden

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ! lauffähiges ! Script, dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

  • Bei mir kommt wieder: "Die Liste mit Dateien die durchsucht werden sollte, konnte nicht erstellt werden. Der Fehlercode aus _FileListArrayRec lautet:Path not found or invalid. Die Anwendung wird beendet."

    Kannst Du den aktuellen code nochmal hochladen? Dann versuch ichs mit dem nochmal.

    Sauber bleiben.

  • so, diesen Code habe ich gegen meine NAS geprüft und deine Ordnerstruktur mit eingebaut.

    Wie gesagt, das Problem ist der UNC Pfad. Da schleicht sich schnell mal ein Fehler ein, wenn man das "aus der Hüfte" proggt.

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ! lauffähiges ! Script, dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

    Einmal editiert, zuletzt von Schnuffel (27. Januar 2024 um 17:07)

  • Wieder: "Die Liste mit Dateien die durchsucht werden sollte, konnte nicht erstellt werden. Der Fehlercode aus _FileListArrayRec lautet:Path not found or invalid. Die Anwendung wird beendet." :(

    Pfade alle nochmal überprüft. Was könnte ich noch versuchen? Welchen Pfad findet er nicht? "\\192.168.150.34\NAS Zuhause synch verschlüsselt\Firma\Rechnungen"? Wenn ich das kopiere in den Explorer dann öffnet er den Netzwerkordner. Als Laufwerk hinterlegt habe ich den allerdings nicht.

    Sauber bleiben.

  • ich kenne deine Umgebung nicht. Auf meiner NAS funktioniert der Code.
    Ersetze zum Test den Pfad in Zeile 21 mit einem lokalen Ordnerpfad.

    Wenn es dann geht, liegt das Problem am Netzwerk Pfad.

    PS: wenn meine NAS eine Weile nichts zu tun hat, geht die in den Standby. Wenn ich dann versuche auf sie zuzugreifen kommt bei mir immer "Laufwerk nicht erreichbar".

    Vielleicht liegt es daran.

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ! lauffähiges ! Script, dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)