使用chrome --print-to-pdf --headless来快速打印html?

时间:2017-08-18 03:59:48

标签: google-chrome pdf fetch-api google-chrome-headless

我使用了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流程?

谢谢!

1 个答案:

答案 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));
});