использовать chrome --print-to-pdf --headless для слишком быстрой печати html?

Я использовал 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?

Спасибо!


person justinlin    schedule 18.08.2017    source источник


Ответы (1)


Я решил эту проблему, используя сладкий пакет nodeJS под названием html-pdf-chrome, который решает эта проблема заключается в указании 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));
});
person Ryan Shillington    schedule 04.05.2018