mPDF Programmierung

Ich bin derzeit dabei, eine Angebotsfunktion zu entwickeln, die den Inhalt des Warenkorbs als Angebot interpretiert, und diesen dann in ein PDF-Angebot umwandelt. Das funktioniert auch alles so weit, ich habe nur ein Problem mit dem PDF-Header. Mit “SetHTMLHeader()” kann ich ja einen Header definieren, der auf jeder Seite erscheinen soll. Das funktioniert auch so weit, das Problem ist nur, dass der Seitentext nicht nach dem Header beginnt, sondern auch am oberen Rand der Seite, und so den Header überlagert. Ich habe schon versucht, dem Header eine feste Höhe zu geben, aber das nutzt auch nichts. Hat jemand eine Idee/Erfahrung, wie man den Seitentext unter dem Header beginnen lassen kann?

Mit festem Header und Footer hatte ich auch so meine Probleme - das wird wohl teilweise nicht richtig interpretiert und gibt bei mehreren Seiten Probleme. Ich habe das direkt in Smarty gelöst - also ein Array mit den Informationen für die jeweilige Seite und dann in der foreach abfragen, auf welcher Seite man sich befindet und ggf. Header + Footer ausgeben. Also z.B. {if $smarty.foreach.pagingLoop.first} Header nur auf der ersten Seite {/if} {if !$smarty.foreach.pagingLoop.last} Am Ende der Seite Seitenumbruch erzwingen <pagebreak></pagebreak>{/if} Ansonsten gibt es auch noch spezielle mpdf Steuer-Tags die du für Header + Footer direkt im Template verwenden kannst - da könntest du dich auch nochmal probieren.

1 Like

[quote=„Stefan Hamann“]Ich habe das direkt in Smarty gelöst - also ein Array mit den Informationen für die jeweilige Seite und dann in der foreach abfragen, auf welcher Seite man sich befindet und ggf. Header + Footer ausgeben[/quote] Mein Problem ist, dass ich den PDF-Seitenumbruch in Smarty nicht kenne… Man könnte zwar vor jedem Warenkorb-Artikel einen Seitenumbruch machen, aber das ist ja auch doof. Mal schauen, ob das mpdf-Forum was hergibt… Aber ansonsten ist mpdf Klasse… Wenn ich bedenke, was für Klimmzüge man bisher mit tcpdf machen musste, um PDF zu erzeugen… (Obwohl das je jetzt wohl auch HTML versteht.) Dagegen ist das absolut einfach, weil man ein HTML-Layout doch besser steuern kann. Und mit einer handvoll PHP-Anweisungen bekommt man dann ein sauberes PDF. Problematisch ist halt nur das von schlechten HTML-Editoren erzeugte HTML bei komplexeren Tabellenstrukturen… Da muss mPDF passen… Unser Kunde hat leider haufenweise so ein Zeug… Muss er wohl nacharbeiten, wenn er das im PDF haben will.

[quote=„avenger“]Ich bin derzeit dabei, eine Angebotsfunktion zu entwickeln, die den Inhalt des Warenkorbs als Angebot interpretiert, und diesen dann in ein PDF-Angebot umwandelt. Das funktioniert auch alles so weit, ich habe nur ein Problem mit dem PDF-Header. Mit „SetHTMLHeader()“ kann ich ja einen Header definieren, der auf jeder Seite erscheinen soll. Das funktioniert auch so weit, das Problem ist nur, dass der Seitentext nicht nach dem Header beginnt, sondern auch am oberen Rand der Seite, und so den Header überlagert. Ich habe schon versucht, dem Header eine feste Höhe zu geben, aber das nutzt auch nichts. Hat jemand eine Idee/Erfahrung, wie man den Seitentext unter dem Header beginnen lassen kann?[/quote] Wie so vieles ist auch das sehr einfach zu lösen, wenn man weiß wie… Man muss bei der Erstellung der Klasse einfach eine entsprechende „top-margin“ definieren: $mpdf=new mPDF(’’,’’, 0, ‚‘, 15, 15, 16, 16, 9, 9);