mixmastertobsi: html2pdf Background PDF

Hallo,

ich möchte nun von FPDF auf HTML2PDF umstellen, allerdings habe ich hier schon die ersten Probleme.

Gibt es denn keine Möglichkeit eine PDF als Background einzufügen. Ich finde nur die Möglichkeit ein Bild zu laden.

Des Weiteren kann ich keine SVG-Bilder laden. An was könnte dies liegen??

  1. Hallo mixmastertobsi,

    das ist nicht ganz einfach, weil der Browser PDFs nicht eigenständig anzeigen kann.

    LMGTFY: Die Frage ist hier auch aufgekommen, dort findest Du vielleicht brauchbare Hinweise.

    Du kannst dann mit position:absolute deinen Inhalt über das PDF legen.

    Ob Du damit das richtige tust, steht auf einem anderen Blatt. Was enthält das PDF, das Du da in den Hintergrund legst? Ist es schmückendes Beiwerk, oder enthält es relevante Informationen? Wenn letzteres, ist ein PDF oder generell ein Stapeln von Informationen in Ebenen der falsche Weg, das ist nicht zugänglich.

    Rolf

    --
    sumpsi - posui - clusi
  2. ich möchte nun von FPDF auf HTML2PDF umstellen, allerdings habe ich hier schon die ersten Probleme.

    Vergiss HTML2PDF besser schnell wieder, das kann höchstens 1% oder 2% von gängigem HTML und CSS darstellen und selbst dann weicht die Darstellung noch von jedem herkömmlichen Browser ab. Nimm deshalb einen richtigen Browser. Chrome hat einen sogenannten headless Modus, der ohne grafische Oberfläche startet und programmatisch und per Kommandozeile eingesprochen werden kann. In der Dokumentation gibt es auch schon ein Beispiel, um PDF-Dateien erzeugen zu lassen: https://developers.google.com/web/updates/2017/04/headless-chrome#create_a_pdf_dom

    Hintergrundbilder erzeugst du dann wie gewohnt mit background-image.

    1. Hallo, ich brauche es ja für unseren Webshop und der soll hier Rechnungen und Frmulare in PHP erzeugen.

      1. Hallo, ich brauche es ja für unseren Webshop und der soll hier Rechnungen und Frmulare in PHP erzeugen.

        Dann bist Du m.E. bei HTML2PDF schlecht aufgehoben und der Vorschlag von 1unitedpower mitteles headless Webkit ein PDF zu rendern, wird euch nicht wirklich glücklich machen (so viel Charme er auch für andere Zwecke hat). Wenn man sauber und robust Rechnungen (inkl. z.B. Seitenüberläufe) erzeugen möchte, kommt man m.E. mittelfristig nicht an einem "programmierten" Ansatz vorbei.

        Meine Empfehlung aus eigener Erfahrung war die PDFLib, aber Sophies Empfehlung liest sich auch gut.

        1. Meine Empfehlung aus eigener Erfahrung war die PDFLib, aber Sophies Empfehlung liest sich auch gut.

          Falsch. Andaris' Empfehlung war gemeint.

      2. Das kannst du damit wunderbar machen. Ich nutze HTML2PDF für alle meine Rechnungen, Lieferscheine, Angebote und Co. Diese sind sehr aufwendig mit CSS gestaltet und sehen im Druck sehr gut aus.

      3. Hallo mixmastertobsi,

        bei Rechnungen stellt sich mir die Frage, warum Du sie als Hintergrund anzeigen musst. Schick vom PHP einfach das PDF mit entsprechendem MIME-Typ ab, dann zeigt der Browser es an wenn ein PDF-Plugin vorhanden ist und bietet andernfalls den Download an.

        PDFs als Formulare - hoffentlich nur um sie zu drucken und dann auszufüllen. In dem Fall gilt das gleiche wie bei den Rechnungen.

        Falls Du ein PDF im Hintergrund darstellen willst, dem Du dann Eingabefelder überlagerst um sie ausfüllen zu lassen - tu das nicht. Du ersäufst in browserspezifischen Details, du besserst ständig nach wenn der Formularautor einen neuen Geistesblitz hat und es ist absolut nicht zugänglich.
        

        Online ausfüllbare Formulare sollten mit HTML dargestellt werden.

        Das Thema SVG haben wir noch gar nicht besprochen - dazu kann ich ohne einen Link auf die defekte Seite nichts sagen.

        Rolf

        --
        sumpsi - posui - clusi
    2. Sorry, du schreibst Müll! Ich nutze HTML2PDF schon seit Jahren und bin noch nie an meine Grenzen gekommen.

      1. Hallo Sophie,

        offenbar hast Du andere Anforderungen als 1UP bzw. nutzt einen geringeren Umfang der HTML/CSS Welt und bist deshalb zufrieden. 1UPs Nutzungsprofil ist ein anderes, für ihn reicht HTML2PDF nicht und darum ist er[1] nicht zufrieden.

        Die andere Frage ist, ob der Vorschlag von 1unitedpower geeignet ist, auf einem Server ausgeführt zu werden. Chrome schreibt (unter Windows) Daten in seinen Installationsordner (z.B. ein chrome_debug.log oder eine settings.dat), was bedeutet, dass hier eine Kollision möglich ist. Ob das unter Unix auch passiert, weiß ich nicht, das wäre zu prüfen. Will man Chrome auf diese Weise nutzen, sind mehrere Dinge unbedingt nötig:

        • --print-to-pdf alleine erzeugt ein output.pdf im Chrome-Installationsordner. Ein Not-At-All-Go!
        • --print-to-pdf=form1.pdf erzeugt ein form1.pdf im Chrome-Installationsordner. Immer noch ein No-Go. Ich habe das mal als Problem an Google gemeldet.
        • -- print-to-pdf=C:\temp\form1.pdf erzeugt es im Temp-Ordner. Für einen Server immer noch nicht ausreichend, man sollte als Ordner einen wählen, der für das entsprechende Web spezifisch ist.
        • Für eine halbwegs brauchbare Darstellung muss man den --window-size Parameter mitgeben. In der [Ankündigung von Eric Bidelman] wurde --window-size=1280,1696 für einen "standard letterhead" empfohlen.
        • Allerdings ist es NICHT möglich, die Seitenausrichtung oder die Seitengröße anzugeben. Im Gegenteil - beim googlen findet man immer wieder Klagen darüber. Angeblich funktioniert was über das DevTools API - aber nun wird's wild, dafür brauchst du eine IP-Connection zur Chrome-Instanz.
        • Ansonsten sollte es funktionieren, zumindest BEHAUPTET Chrome das. Sie schreiben hier: Headless Chromium allows running Chromium in a headless/server environment.

        Ich empfinde diese Einschränkungen zu gravierend, als dass ich chrome --headless --print-to-pdf für mehr als eine Experimentierküche empfehlen könnte. Es scheint noch sehr unreif.

        Rolf

        --
        sumpsi - posui - clusi

        1. sofern die Annahme „1UP ist männlich“ stimmt... ↩︎

      2. Sorry Sophie,

        das -1 gab es für diese Stilblüte (Hervorhebungen von mir);

        Sorry, du schreibst Müll! Ich nutze HTML2PDF schon seit Jahren und bin noch nie an meine Grenzen gekommen.

        Seit wann schließt man denn von den eigenen Anforderungen auf die anderer?

        Viele Grüße
        Robert

        1. Seit wann schließt man denn von den eigenen Anforderungen auf die anderer?

          Genau so wie es 90% aller Teilenehmer hier machen vor allem Herr @Gunnar Bittersmann

          1. Hallo Sophie,

            du schließt schon wieder von einem auf alle.

            Viele Grüße
            Robert

            P.S.: „Aber wenn du mal ehrlich in dich gehst und darüber nachdenkst, wirst du doch einsehen, dass …“ — „Das steht alles auf meiner Not-To-Do-Liste!“
            – Das Känguru in Antwort an Marc-Uwe

  3. Hallo Tobsi,

    was ist denn genau dein Usecase? Möchtest du eine im Browser angezeigte HTML-Ausgabe zusätzlich als PDF dargestellt werden oder soll nur das PDF erzeugt werden?

    Vielleicht wäre es auch eine Überlegung, von XHTML aus über XSL-FO nach PDF zu gehen (z.B. mit fop). Alternativen wären weiterhin von SVG über inkscape im Batchmodus oder mit Hilfe von LaTeX.

    Viele Grüße
    Robert