Papiergebundenes HTML für die Verwendung mit WKHTMLTOPDF erstellen

9

Ich versuche, eine Berichts-Engine mit WKHTMLTOPDF zu implementieren, und ich habe Probleme, den Inhalt mit Papierkanten auszurichten.

Überlege, dass ich das Papierformat auf A4 setze und die Ränder wie folgt auf Null drucke:

%Vor%

Ich möchte jetzt einen Bericht erstellen, in dem der Inhalt nicht durch Papierkanten abgeschnitten wird. z.B. Mein Inhalt besteht aus Tabellen und Zellen und ich möchte nicht, dass eine Zelle in zwei Seiten aufgeteilt wird. CSS2 hat eine Funktion speziell dafür, page-break-inside:avoid , aber ich kenne keinen Browser, der es unterstützt, und Webkit ist keine Ausnahme.

Dann dachte ich, wenn ich wüsste, wie lange tatsächlich ein A4-Papier in WKHTMLTOPDF ist, dann kann ich etwas Javascript schreiben, um Zeilen durch Größenanpassung auszurichten. Da es keinen Sinn gab, die tatsächlichen Millimeter in CSS zu sagen, um ein A4-Papier vollständig zu füllen, hatte ich keine andere Wahl, als Fehler und Versuch zu verwenden. Schließlich habe ich es geschafft, die CSS-Höhe ( height: 290.245261mm ) so einzustellen, dass der Seiteninhalt ein A4-Papier vertikal ausfüllt. Diese Höhe ist für ein DIV mit absoluter Positionierung und oben und links auf Null gesetzt. Alle effektiven Paddings und Ränder werden ebenfalls auf Null gesetzt (HTML, BODY, ...).

Alles war in Ordnung, bis ich die Schwere der Situation erkannte, als die Anzahl der Seiten wuchs. Also habe ich zehn ganzseitige DIVs in mein HTML geschrieben und zu meiner Überraschung 11 Seiten gedruckt. Mit einer winzigen Pixelreihe am Anfang der 11. Seite.

Also, hier ist meine Frage: Hat jemand eine Lösung gefunden, um HTML-Inhalte mit Papierkanten auszurichten, wenn ein HTML mit WKHTMLTOPDF konvertiert wird? Und ich verwende WKHTMLTOPDF 0.11.0 rc1.

    
Mehran 08.12.2013, 12:19
quelle

1 Antwort

1

(Obwohl dies eine alte Frage ist, fragen die Leute immer noch so ...)

Die beste Lösung besteht darin, das Tool wkhtmltopdf zu aktualisieren.

Der von Ihnen beschriebene Fehler wurde in der Version 0.12 behoben Tabellenzeilen werden nicht mehr in zwei Seiten aufgeteilt (wie im verknüpften Änderungsprotokoll erwähnt:

)
  • [qt] verhindert Seitenumbrüche in Tabellenzeilen

Ich benutze dieselbe Bibliothek für mehrere Projekte und das hat mich gerettet, auch wenn ich es damals kompilieren musste.

    
hexblot 20.10.2016 12:16
quelle

Tags und Links