J'essaie d'utiliser Google Chrome en remplacement de PhantomJS pour convertir du HTML en PDF. Jusqu'à présent, ça fonctionne bien pour moi. La question que je que je ne l'ai pas trouvé un moyen de traduire le code PhantomJS suivant:Modifier l'en-tête/pied de page par défaut lors de l'impression au format 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>";
})
}
}
Format date est la même fonction que en question How to format a JavaScript date
Cependant je n'ai pas trouvé un moyen de reproduire cette comportement dans Google Chrome en tête.
C'est un aperçu de mon chrome code d'interface à distance:
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 });
};
Je reçois le PDF très bien mais ne peut obtenir les en-têtes par défaut Chrome et pieds de page. Un moyen de les modifier? Je constate que je peux utiliser JavaScript dans ma page pour ajouter des éléments au bas de chaque page, mais je préférerais modifier le pied de page qui est ajouté par le navigateur lors de l'exportation/l'impression comme 'I' J'ai trouvé qu'il est beaucoup plus fiable de se positionner correctement et sans provoquer d'étranges réécoulements d'autres divs dans la page.
Lorsque le chrome est en mode fenêtre, puis aussi ne prend pas en charge en-tête changeant et le contenu de bas de page, donc je pense que la méthode sans tête ne supportera pas cela aussi. Il est clair à partir du lien (https://chromedevtools.github.io/devtools-protocol/tot/Page/#method-printToPDF) dans votre code qu'il n'y a pas de tels paramètres –
avec javascript comment voulez-vous ajouter des éléments à le haut de chaque page? Je comprends que nous pouvons ajouter les éléments en haut du document, mais comment allons-nous cibler le haut de chaque page dans le PDF final? – kyriakos
@kyriakos Vous auriez besoin que chaque élément de la page soit dans son propre 'div' pour que cela soit possible. C'est une solution, mais pas une bonne solution. – apokryfos