2017-02-08 2 views
1

Ich erstelle eine HTML-Seite basierend auf den Daten aus der Datenbank und konvertiert sie dann in pdf mit Dompdf. Ich weiß, über page-break-after in dompdf und in der Lage ist, es zu benutzen, den Inhalt zur nächsten Seite zu verschieben, indem ein, wenn die Bedingung in php wie diesesErmitteln der Höhe der Seite in PDF gerendert mit dompdf

if($count_row > 7) 
{ 
    $html = $html.' 
    </table> 

    <br/><br/> 
    <img width="1640px" height="30px" src="bottombar.png" /> 

    <div style="page-break-after:always;position:relative;"> 
    </div>'; 

    } 

Alles funktioniert gut. Aber jetzt möchte ich die Seite dynamisch brechen. Abhängig von der Höhe der Tabelle, nachdem der Inhalt in jeder Zeile eingegeben wurde, wenn die nächste Zeile auf die nächste Seite übergeht, brechen Sie die Seite ab, fügen Sie einige Header hinzu und fügen Sie die nächste Zeile hinzu.

Da der Inhalt in jeder Zeile dynamisch ist, besteht die Möglichkeit, dass eine Seite 10 Zeilen enthält, weitere 15 Zeilen. Daher möchte ich das Zeilenlimit nicht so beschränken, wie ich es jetzt tue.

Gibt es eine Möglichkeit, die Höhe der Seite zu erhalten, nachdem jede Zeile in Dompdf oder von PHP hinzugefügt wurde. Ich weiß, dass es in JS getan werden kann, aber es ist möglich, in PHP zu tun.

Auch ich kenne die Seitengröße, da ich es manuell einstelle.

$paper_size = array(0,0,1300,1300); 
$pdf->set_paper($paper_size); 

Jede Hilfe wird geschätzt. Danke im Voraus.

+0

Welche Art von Header sind Sie wollen hinzufügen? Dompdf unterstützt Tabellenköpfe (' ...') wenn Sie das brauchen. Wenn es eine andere Art von Header ist, ist es eine größere Herausforderung, aber immer noch möglich. – BrianS

+0

Hey Brian, ich kann die Header hinzufügen, aber derzeit breche ich die Seite immer, wenn die Anzahl der Zeilen in der Tabelle 7 erreicht hat, statt dessen möchte ich die Höhe der Seite nach dem Hinzufügen jeder Zeile überprüfen und die Seite nur bei neuer Zeile unterbrechen Wenn es hinzugefügt wird, wird es auf die nächste Seite übertragen. Vielen Dank – user6000866

Antwort

0

Ich arbeitete mit dieser Bibliothek und es gab mir immer diese Art von Problemen. Was ich empfehlen würde, für phantomJS zu ändern.

PhantomJS ist ein Headless-WebKit, das mit einer JavaScript-API skriptfähig ist. Es hat schnelle und native Unterstützung für verschiedene Web-Standards: DOM-Handhabung, CSS-Selektor, JSON, Canvas und SVG.

es erlaubt Ihnen, gerenderte Inhalte zu setzen und es als PDF speichern

http://phantomjs.org/screen-capture.html Anwendungsbeispiel: https://coderwall.com/p/5vmo1g/use-phantomjs-to-create-pdfs-from-html

+0

Hey Rafal, mein Inhalt kommt von einer MySQL DB, und dann gerendert in eine HTML, die dann in eine pdf mit Dompdf konvertiert wird. Meine Frage ist, ob es von Dompdf oder PHP möglich ist, die Seitenhöhe der PDF nach dem Eingeben jeder Zeile in der Tabelle zu erhalten. – user6000866

+0

Die Verwendung von PhantomJS kann gelöst werden, indem eine temporäre HTML-Datei erstellt und wie im obigen Beispiel dem Skript zur Verfügung gestellt wird. Ich habe das gesagt, weil ich weiß, dass die Kenntnis der Höhe Ihr Problem möglicherweise nicht löst. Wenn du 2 Stunden für einen Beweis für PhantomJS ausgeben könntest, würdest du es versuchen? ;) –

+0

Sicher werde ich mir PhantomJS anschauen und es benutzen, wenn es mein Problem löst. Danke für deine Einsichten. – user6000866

Verwandte Themen