google-chrome - 使用 chrome --print-to-pdf --headless 太快地打印 html?

标签 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可以完美呈现。那么,有什么方法可以延迟打印到 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));
});

关于google-chrome - 使用 chrome --print-to-pdf --headless 太快地打印 html?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45748323/

相关文章:

google-chrome - 在后台运行 google chrome 实例

javascript - 单击扩展鼠标打开本地 .html

c# - PdfContentByte.SetFontAndSize() 抛出 "Object reference not set to instance of object"

java - 如何使用java从jasperserver报告生成PDF文件

javascript - fetch POST 返回 HTTP 415,而 curl 继续正常并返回结果

javascript - Polar accesslink API POST 用户无法工作

javascript - Chrome HTML document.execCommand ('inserthtml' 插入下表单元格

google-chrome - Chrome 在下载 PDF 时发送两个请求(并取消其中一个)

java - PDFBox:PdfTextStripper 中的不可见文本(不是剪辑路径或颜色问题)

javascript - 如何从api中获取数据?