使用 chrome --print-to-pdf --headless 打印 html 太快?
use chrome --print-to-pdf --headless to print html too quickly?
我使用 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 可以完美呈现。那么,有什么办法可以延迟打印到 pdf 的过程吗?
谢谢!
我通过使用一个名为 html-pdf-chrome 的 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));
});
我使用 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 可以完美呈现。那么,有什么办法可以延迟打印到 pdf 的过程吗?
谢谢!
我通过使用一个名为 html-pdf-chrome 的 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));
});