我正在尝试使用 Google Chrome 代替 PhantomJS 将 HTML 呈现为 PDF。到目前为止,它对我来说效果很好。我唯一的问题是我没有找到任何方法来翻译以下 PhantomJS 代码:
page.paperSize = {
footer: {
contents: phantom.callback(function(pageNum, numPages) {
return "Power by MyWebsite. Created on "+formatDate(new Date())+"<span style='float:right'>" + pageNum + " / " + numPages + "</span>";
})
}
}
格式日期与问题中的功能相同如何格式化JavaScript日期
但是我还没有找到一种方法可以在无头的谷歌浏览器中复制这种行为。我正在使用来自https://github.com/cyrus-and/chrome-remote-interface的 Chrome 远程接口 (CDP)
这是我的 chrome 远程接口代码的大纲:
return new Promise(async function (resolve, reject) {
const url = "<MyURL here>";
const [tab] = await Cdp.List()
const client = await Cdp({ host: '127.0.0.1', target: tab });
await Promise.all([
Network.enable(),
Page.enable()
]);
Page.loadEventFired(function () {
setTimeout(function () {
resolve(Page.printToPDF({displayHeaderFooter:true}))); //https://chromedevtools.github.io/devtools-protocol/tot/Page/#method-printToPDF
}, 3000);
});
await Page.navigate({ url });
};
我得到的 PDF 很好,但只能得到默认的 Chrome 页眉和页脚。有什么办法可以修改它们?
注意:我意识到我可以在我的页面中使用 JavaScript 将元素附加到每个页面的底部,但我更喜欢在导出/打印时更改浏览器附加的页脚,因为我发现它更可靠正确放置并且不会导致页面中其他 div 的任何奇怪的重新流动。