我正在从用户提交的 HTML/CSS 生成 PDF。客户已要求 PDF 具有背景图像以添加一些品牌。PDF 库是 wkhtmltopdf11RC1。
我可以使用 PDF 转换库使图像在后台打印,但真正的问题是正文的高度不能保证是纸张高度的倍数,所以最后一页通常会被切断,背景图像未显示。
PDF 库确实有 javascript 支持,但element.offsetHeight
似乎并不准确,因此我无法检查要填充多少内容才能制作一整页。
有没有人有类似的经历或者有没有人有一个好主意?
我正在从用户提交的 HTML/CSS 生成 PDF。客户已要求 PDF 具有背景图像以添加一些品牌。PDF 库是 wkhtmltopdf11RC1。
我可以使用 PDF 转换库使图像在后台打印,但真正的问题是正文的高度不能保证是纸张高度的倍数,所以最后一页通常会被切断,背景图像未显示。
PDF 库确实有 javascript 支持,但element.offsetHeight
似乎并不准确,因此我无法检查要填充多少内容才能制作一整页。
有没有人有类似的经历或者有没有人有一个好主意?
不幸var currentBodyHeight = $('body').height();
的是,由于某种原因,它没有给出准确的身体高度指示,如原始帖子中所述。我按照 Nenotlep 的建议使用了 PDFtk。
这并不太棘手,只需要确保文件被正确保存和擦除,并且我总是保留对临时文件的引用。
如果插件依赖于身体的高度来做出打印决定,那么这可能会起作用。它所做的是将正文的高度设置为页面高度的倍数。您将不得不弄清楚纸张高度是多少 - 标准是每英寸 72 像素。所以 11.5 英寸相当于 841 像素,但您可能需要调整边距。
var paperHeight = 841;
var currentDocHeight = $(document).height();
var pages = Math.ceil(currentDocHeight / paperHeight);
var newBodyHeight = pages * paperHeight;
$('body').css('height', newBodyHeight);
我已经使用 jQuery 来压缩答案,但这也可以在没有 jQuery 的 javascript 中完成。
CSS:
body {
margin:0
}