我使用了cmd并键入了“chrome --headless --disable-gpu” --print-to-pdf = d:\ project \ test.pdf http://localhost:8085/t1/index.html?data=http://localhost:8085/1/mock.json“
和生成的pdf只是空白。我认为原因是我使用fetch来获取mock.json和
dom没有足够的时间完全渲染。如果我只导入mock.json和
pdf可以完美呈现。那么,有没有办法推迟print-to-pdf流程?
谢谢!
答案 0 :(得分:1)
我通过使用名为html-pdf-chrome的sweet nodeJS包解决了这个问题,它通过指示Chrome等待超时,调用回调函数或页面上的选择器存在来解决此问题。
我的代码:
const PRINT_OPTIONS = {
clearCache: true,
printOptions: {
scale: 0.6
},
completionTrigger: new HtmlPdf.CompletionTrigger.Timer(5000) // Give it 5000ms to render the HTML
};
async function outputHTMLToPDF(sourceHTML, outputFilename) {
console.log("Printing the html using Chrome...");
let pdf = await HtmlPdf.create(sourceHTML, PRINT_OPTIONS);
console.log("Saving the PDF to " + outputFilename + "...");
await pdf.toFile(path.join(DEFAULT_PRINT_PATH, outputFilename));
});