5 Stimmen

Seitenumbruch in Html2Pdf

Ich bin gerade dabei, eine dynamische pdf-Datei zu erstellen, die Daten von etwa 10.000 Benutzern enthält. Die App wird im Allgemeinen mit MySQL und PHP entwickelt. Der dynamische Inhalt ist so umfangreich, dass ich es schwierig finde, ihn mit fpdf() Klasse. Also habe ich meine PHP-Ausgabeseite als HTML-Datei mit ob_get_clean() . Jetzt wird die HTML-Datei erfolgreich generiert und auch die PDF-Datei. Aber ich möchte einen Seitenumbruch nach den Daten eines jeden Benutzers, d.h. die Daten eines jeden Benutzers müssen auf einer neuen Seite beginnen. Ich konnte keine HTML-Tags verwenden, da in der dynamisch generierten HTML-Datei alles aus dem <html> y </html> Tags. Bitte helfen Sie mir, so dass ich irgendwie einen Seitenumbruch in der PDF-Datei nach jedem Benutzer Daten machen... Vielen Dank im Voraus :)

18voto

Andon Totev Punkte 194

Html2pdf unterstützt Seite Tag:

protected function _tag_open_PAGE($param) {} 

in Zeile 2229. Dort können Sie sehen, welche Attribute unterstützt werden. Im Folgenden wird zum Beispiel eine Seite im Querformat und eine im Hochformat erstellt:

<page orientation="l">
... some content ...
</page>
<page orientation="p">
... some content ...
</page>

14voto

Thanh Trung Punkte 3326

Auf der Grundlage von macdabbys Arbeit (die nicht funktioniert). Aber dank ihm, die Idee ist richtig.

Html2Pdf v4.03

Wir wollen zum Beispiel ein Tag DIV analysieren:

html2pdf.class.php Zeile 2948:

protected function _tag_close_DIV($param, $other='div')
{
    if ($this->parsingCss->value['page-break-after'] == "always")
      $this->_setNewPage(null, '', null, $this->_defaultTop);
      $this->parsingCss->setPosition();
    ...
}

parsingCss.class.php Zeile 114:

//add a new style declaration
public function initStyle()
{
    ...
    $this->value['page-break-after'] = null;
}

Zeile 1024 fügt dem switch case einen neuen Handler hinzu:

case 'page-break-after':
    $this->value[$nom] = $val;
    break;

Damit es funktioniert, sollte Ihr HTML-Inhalt das Break-Element enthalten

 <div style="page-break-after:always; clear:both"></div>

Achten Sie auf die Groß- und Kleinschreibung, ich bin nicht sicher, ob das Plugin damit umgehen kann.

2voto

graphicdivine Punkte 10919

Möglicherweise möchten Sie einige css, z. B. verwenden:

h1 {page-break-before:always}

2voto

macdabby Punkte 196

Ich habe das gerade herausgefunden, nachdem ich das gleiche Problem hatte. Der Parser, den sie verwenden, unterstützt den page-break-after-Tag, aber das html2pdf funktioniert nicht.

Ich glaube, ich habe es mit den folgenden Änderungen an html2pdf.class zum Laufen gebracht:

um die Zeile 4174, das erste, was darin steht:

protected function _tag_close_P($param){

sein sollte:

   if($this->parsingCss->value['page-break-after'] == "always")
        $this->_setNewPage();

um die Zeile 2961, das erste, was drin steht:

protected function _tag_close_DIV($param, $other='div'){

sein sollte:

 if($this->parsingCss->value['page-break-after'] == "always")
        $this->_setNewPage();

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X