Mit Autoit eine PDF-Datei erstellen

  • Hallo an Alle,

    kann mir jemand sagen, ob man mit Autoit, den Inhalt einer Textdatei und eine Grafikdatei(.png) in einer Datei zusammen tragen kann um daraus dann
    direkt eine PDF-Datei zu erzeugen?

    :?:

  • Hallo hipfzwirgel,

    ob das so direkt geht, weiß ich nicht, du willst ja sicher auch ein entsprechendes Layout der späteren pdf haben. Da gibt es sicher spätere weitere Antworten von Forums Mitgliedern.

    Was aber geht, wenn du aus deinem Text und dem Bild mit den Funktionen von Word eine entsprechende Layout Datei erstellst und die dann als PDF druckst.

    Gruß gmmg

  • Hallo autoBert,

    vielen lieben Dank für die Infos. Leider funktioniert die UDF nicht:

    Code
    Include\MPDF_UDF.au3"(251,54) : error: _Iif(): undefined function.
                _Iif($_sFONT <> "", "/Font<<" & $_sFONT & ">>", "")
                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^

    Das ist die Fehlermeldung aus dem Debugfenster vom SciTE nachdem Drücken von F5. Es wird im SciTE automatisch die udf-Datei geöffnet und der Fehler angezeigt.
    Ich habe es auch probiert die UDf in den Includeordner zu speichern = gleiches Fehlerbild. Mache ich da etwas falsch? ;(

    • Offizieller Beitrag

    Die Funktion _Iif() ist wohl dort irgendwo verloren gegangen (braucht man inzwischen auch nicht mehr, da es den ternären Operator gibt).

    Damit du den Code nicht umschreiben musst, hier die Funktion mal nachgebaut:

    AutoIt
    Func _Iif($condition, $ifTrue, $ifFalse)
        Return ($condition ? $ifTrue : $ifFalse)
    EndFunc
  • Im the wiki des engl. Forums findest Du eine Übersicht über verfügbare PDF UDFs.
    Dazu gehört auch MPDF.

  • Also folgende von Mihai Iancu funktioniert.

  • So wie ich das verstehe kann MPDF das.

  • Das ist genau die UDF die im Beitrag #3 vorgeschlagen wurde und über die wir die ganze Zeit reden. Nur halt der Link direkt zum Download und nicht zum Thema (thread) :)

  • Ich habe mir angewöhnt, für sowas wkhtmltopdf zu verwenden. Damit kann man aus einer HTML-Datei eine entsprechende PDF-Datei erzeugen. Sämtliche Berichtsaufbereitung bei uns in der Firma funktioniert damit. Der Vorteil ist, dass man super Templates nutzen kann und ansonsten nur ein wenig HTML/CSS beherrschen muss.

  • chesstiger : aus Html PDF zu erzeugen ist mit Sicherheit die schnellere Lösung, aber ginge dies nicht auch mit dem "Microsoft To PDF"-Druckertreiber?

    hipfzwirgel : Mit Example_Mixed und Example_Image2PDF sind aber gute Beispiele in der Zipdatei, die zeigen wie es mit AutoIt funktioniert.

  • Hallo!

    Es gibt die MPDF_UDF um PDFs mit Text, Bilder und Grafiken zu erstellen. Du kannst auch verschiedene Schriftarten einbinden......

    Sollte im englischen Forum zu finden sein....

    lg

    Racer

  • ist das nicht genau die UDF die im Beitrag #3 vorgeschlagen wurde und über die wir die ganze Zeit reden? :/

  • autoBert

    Ja, das geht grundsätzlich auch mit dem in Windows 10 integriertem PDF-Drucker.

    Man muss dann allerdings erstens ein Programm haben, was das HTML-Dokument an den Druckertreiber weitergibt... Also z.B. IE oder Chrome. Die wiederum müssten dann im Hintergrund entsprechend aufgerufen werden, was mit dem IE noch geht, mit Chrome aber schon eine Gratwanderung wird.

    Und zweitens erzeugt der integrierte PDF-Drucker nur ganz primitive PDF-Dokumente, in denen bspw. Text nicht als Text abgelegt ist, sondern als Bitmap. Das führt dazu, dass der Benutzer keine einzelnen Elemente aus dem PDF-Dokument rauskopieren kann. Wir bereiten mit wkhtmltopdf ziemlich viele Listen und Tabellen auf, die wir an unsere Kunden rausschicken. Da soll der Kunde natürlich schon die Möglichkeit haben, auch Preise und Artikelbezeichnungen aus dem Dokument zu kopieren.

    Ich habe damals auch viel damit rumexperimentiert, bin dann aber doch bei wkhtmltopdf geblieben, weil es deutlich flexibler ist und auch noch portabel.

    Das hier ist zum Beispiel unser Ordersatz: https://3f-berleburg.de/download/Ordersatz.pdf

    Diese Datei wurde aus einer primitiven CSV-Datei automatisch mittels eines AutoIt-Skripts und wkhtmltopdf generiert. Besondere "Higlights", die nur mit wkhtmltopdf möglich sind... Das anklickbare Inhaltsverzeichnis mit Sprüngen zu den entsprechenden Abschnitten, die immerwiederkehrende Kopfzeile auf jeder Seite, die _nicht_ Bestandteil der ursprünglichen HTML-Datei ist usw...

    Kurzum: Für ganz ganz simple Sachen reicht auch der integrierte PDF-Drucker. Aber für alles weitere ist wkhtmltopdf echt ein super Alleskönner.

  • Ich mache das seit Jahren wie folgt:

    Aus Autoit heraus einfache Textdocumente erstellen mit PCL Steuercodes. PCL Steuercodes findet man in jedem Laserdrucker Handbuch. Damit kann mann rechten / linken Rand einstellen, Schriftgröße, Fett, Italic, Laufweite usw. usw. Man muss sich ein wenig einlesen. (PCL Codes ESC Codes oder auch 1B....).

    Damit konnte ich alles an Textdateien erstellen was ich, beruflich, benötigte. Und dann ruft man via Autoit (Script), WinPCLtoPDF auf, das findet man hier:

    http://www.columbia.edu/~em36/pcltopdf.html

    das erzeugt dann aus der PCL Datei ein fertiges PDF. Sofern man noch Bilder in Form von Logos (Firmenlogo, in immer gleicher Weise) benötigt, fertigt man sich einmalig eine PDF Vorlage und "stempelt" diese mit der Freeware command line Version von z.B. pdftk darüber. Klingt kompliziert - ist es aber nicht, wenn man sich damit ein wenig beschäftigt. Gleiches würde mit Bildern funktionieren.

    Selbstverständlich funktioniert das mit PCLtoPDF auch ohne PCL Codes. Dann eben recht unformatiert. Bemerkung am Rande PCltoPDF scheint in Autoit geschrieben zu sein. Der Autor jedenfalls bedankt sich bei der Autoit Community.

    Gruss

    Peter

    Hinweise auf Suchmaschinen finde ich überflüssig - wer fragt hat es nicht gefunden oder nicht verstanden. Die Antwort gibt sich oftmals schneller als der Hinweis auf Dr. Goggle & Co.

    Ab 19-10-22 ergänzt um:

    Die Welt wird nicht bedroht von den Menschen, die böse sind, sondern von denen, die das Böse zulassen. (Albert Einstein)

    Einmal editiert, zuletzt von Peter S. Taler (18. April 2021 um 18:33)

    • Offizieller Beitrag

    bin dann aber doch bei wkhtmltopdf geblieben

    Soweit ich gelesen habe, soll der Aufruf ganz simpel sein: wkhtmltopdf URL filename.pdf

    Habe das mit der lokalen Adresse meiner array_tut.htm getestet, aber ohne Erfolg:


    Hast du eine Idee warum?

    [Sorry an den TE, fürs Reingrätschen. Aber gehört gewisserweise ja auch zum Thema]

  • Hallo Alle,

    bin gerade dabei mich ein zuarbeiten. Das erzeugen der PDF-Dateien klappt schon mal mit der UDF.

    eine weitere Frage dazu: ich öffne zunächst ein "Template"-PDF-Formular per shellexecute($tmplt).

    $tmplt = "Dateipfad\Template.pdf"

    Wie kann ich das Formular unter anderem Namen direkt abspeichern,
    um dann per MPDF_UDF der "neuen Datei" den Text und das Image zu fügen zu können?

    Mit FileSaveOpenDialog lege ich den Dateinamen
    nach einem vorgegebenem Muster(YYYY_MM_DeviceName.pdf) fest aber wie speichere ich die PDF-Datei nun ab?

    Filewrite und FileClose funzen nicht ;(