我試圖使用谷歌瀏覽器替代PhantomJS以將HTML呈現爲PDF。到目前爲止,它一直在爲我工作。我有我沒有發現任何方式翻譯下面PhantomJS代碼的唯一問題:在打印到PDF時更改默認頁眉/頁腳
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>";
})
}
}
格式的日期是相同的功能,在問題How to format a JavaScript date
但是我還沒有找到一種方法來複制這種在谷歌瀏覽器中的行爲無頭。
這是我的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得很好,但只能得到默認瀏覽器的頁眉和頁腳。任何方式來修改它們?
注意:我意識到我可以在頁面中使用JavaScript將元素附加到每個頁面的底部,但我更願意在導出/打印時更改由瀏覽器附加的頁腳,我們發現將它正確放置並且不會導致頁面中其他div的奇怪重新流動更爲可靠。
當鉻是在窗口模式下,則還它不支持更改頁眉和頁腳的內容,所以我認爲無頭的方法也不會支持。從代碼中的鏈接(https://chromedevtools.github.io/devtools-protocol/tot/Page/#method-printToPDF)可以清楚地看到,在JavaScript中沒有這樣的參數 –
你會如何去添加元素每頁的頂部?我知道我們可以將這些元素添加到文檔的頂部,但我們將如何定位到最終PDF中每個頁面的頂部? – kyriakos
@kyriakos你需要每個頁面元素都在它自己的'div'中,這樣纔有可能。這是一個解決方案,但不是一個好的解決方案。 – apokryfos