gpt4 book ai didi

javascript - 向 Node Webshot 生成的 PDF 添加标题

转载 作者:行者123 更新时间:2023-11-30 05:31:06 24 4
gpt4 key购买 nike

我正在尝试向使用 node-webshot 生成的 PDF 添加标题, 但没有任何显示。

我正在使用这段代码:

webshot('https://www.google.com', 'google.pdf', options, function (err) {
if(err) throw err;
console.log('Saved to PDF');
});

像这样的选项对象:

var options = {
"paperSize": {
"format": "A4",
"orientation": "portrait",
"border": "0.25cm",
"header": {
"height": "2cm",
"contents": function () {
return phantom.callback(function(pageNum, numPages) {
return '<h1>' + pageNum + ' / ' + numPages + '</h1>';
});
}
}
}
};

我尝试按照 PhantomJS 上的显示方式执行内容功能 documentation但它不起作用,因为未定义幻影。我找不到任何有关如何使用 webshot 添加页眉/页脚的示例。

PDF 生成正确,但页眉是空白的,上面什么也没有写。

我该如何解决这个问题?

最佳答案

我知道这个问题已有一年多了,但对于其他遇到与上述相同问题的人来说,eval() 对我不起作用。我最终做的是在同一位置添加以下代码:

if (key === "paperSize" && page[key] && page[key].header && page[key].header.contents) {
var header = {
"height": page[key].header.height,
"contents": phantom.callback(function() {return options.paperSize.header.contents;})
}
page.paperSize.header = header;
}
if (key === "paperSize" && page[key] && page[key].footer && page[key].footer.contents) {
var footer = {
"height": page[key].footer.height,
"contents": phantom.callback(function() {return options.paperSize.footer.contents;})
}
page[key].footer = footer
}
if (key === "paperSize") {
page.paperSize = {
"format": options.paperSize.format,
"orientation": options.paperSize.orientation,
"margin": options.paperSize.margin,
"header": header,
"footer": footer
}
}

原因是 webshot 将选项对象中的所有数据字符串化,因此使用 phantomjs 呈现页眉和页脚所需的 phantom.callback 无法正确字符串化。相反,您只需要在选项对象中添加要在页眉/页脚中使用的 html,然后将其插入到上面代码中的 phantom.callback 中。这种方法的唯一问题是您不能在回调中使用 numPages 和 pageNum 参数。

关于javascript - 向 Node Webshot 生成的 PDF 添加标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26961624/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com