Я пытаюсь использовать 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
Однако я не нашел способ воспроизвести это поведение в Google Chrome без головы. Я использую удаленный интерфейс Chrome (CDP) с https://github.com/cyrus-and/chrome-remote-interface
Это схема моего кода удаленного кода 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 на своей странице, чтобы добавлять элементы к нижней части каждой страницы, но я бы предпочел изменить нижний колонтитул, добавленный браузером при экспорте/печати, поскольку я нашел его намного более надежным правильно размещаться и не вызывать каких-либо странных перетоков других разделов на странице.