我想从HTML文档生成PDF,其中HTML文档包含以cm为单位指定的元素。我们的想法是指定元素或图像以适合指定的页面。问题是我不能让维度得到尊重。
这是我正在使用的测试HTML:
<html>
<head>
<title>test case</title>
</head>
<body>
<div style="width: 21cm; height: 27cm; border: solid 1px black;">This should be within page bounds!?</div>
</body>
</html>
尝试使用NodeJS模块&#39; phantomjs-pdf&#39; (0.1.2),我使用了以下代码:
var pdf = require('phantomjs-pdf');
var options = {
"html" : "./test-data/document.html",
};
pdf.convert(options, function(result) {
/* Using a buffer and callback */
result.toBuffer(function(returnedBuffer) {});
/* Using a readable stream */
var stream = result.toStream();
/* Using the temp file path */
var tmpPath = result.getTmpPath();
/* Using the file writer and callback */
result.toFile("out.pdf", function() {});
});
输出文件是21cm x 29.71.cm(美国信件)。
我已经尝试了另一个软件包&#39; html-pdf&#39;,它似乎也是基于PhantomJS的并且得到了相同的行为,这表明该问题可能与PhantomJS有关?
有什么建议吗?
我愿意使用替代软件包从HTML转换为PDF,条件是元素维度得到尊重。这是因为我将使用一个图像作为背景(PNG或SVG,取决于支持),它代表一个预期的文档模板,然后将基于一个绝对位置放置HTML元素与页面的给定部分。元件。
我使用的是NodeJS 6.7.0,MacOS X 10.12,我通过MacPorts安装了PhantomJS 2.0.0。
答案 0 :(得分:0)
在发现https://github.com/fraserxu/electron-pdf后我放弃了PhantomJS。到目前为止,它已超出预期。因为Electron运行Chromium,所以printToPDF功能可以像你期望的那样工作。您可以npm install electron-pdf
并使用CLI对您的应用进行评估。由于您希望Letter大小添加-p Letter
并可能将边距设置为无。
在任何一种情况下,我都发现(浏览器)窗口大小(以像素为单位)需要与PDF大小相匹配。对于Letter,这将是(8.5“* 96)乘以(11”* 96)96是HTML的标准像素/英寸比率。如果你想以厘米为单位使用这个比例。