Internet Explorer has Print Template engine, where I can use DEVICERECT
element to represent a physical page, then use LAYOUTRECT
element as a rectangular view to flow the HTML document through into the page and drive the pagination. That prevents lines from being cut-off in the middle between adjacent pages. This mechanism is described in details here.
Does WebKit provide a similar feature? Specifically, does PhantomJS do? I'm looking for anything that would allow to paginate an existing HTML document which doesn't have predefined page-breaks, and view it paginated as a new transformed HTML or PDF document, without lines being cut-off in middle.
The browser engine should take care of everything and you can aid it using a stylesheet for media="print"
.
For example to force page breaks such that every heading of level 1 or 2 (<h1>
or <h2>
) is placed at the beginning of a new page use page-break-before
:
h1, h2 { page-break-before:always; }
In Chrome, IE & Opera you can control widows and orphans, but it hasn't landed in WebKit yet, so for now you could use
p { page-break-inside: avoid; }
to avoid page breaks inside paragraphs.
You can even control margins for first, left and right pages separately.
Phantom's render()
uses stylesheets for print media if the output is a pdf file. rasterize.js
example looks like a ready to use printing solution.
This function working fine.
$(function () {
$("#print-button").on("click", function () {
var table = $("#table1"),
tableWidth = table.outerWidth(),
pageWidth = 600,
pageCount = Math.ceil(tableWidth / pageWidth),
printWrap = $("<div></div>").insertAfter(table),
i,
printPage;
for (i = 0; i < pageCount; i++) {
printPage = $("<div></div>").css({
"overflow": "hidden",
"width": pageWidth,
"page-break-before": i === 0 ? "auto" : "always"
}).appendTo(printWrap);
table.clone().removeAttr("id").appendTo(printPage).css({
"position": "relative",
"left": -i * pageWidth
});
}
table.hide();
$(this).prop("disabled", true);
});
});
This will split entire table into multiple sections...
Here is fiddle
Code taken from this article and this page.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With