协议错误(Page.printToPDF):打印失败 |傀儡师

问题描述 投票:0回答:1

当我尝试在 ubuntu 中将大文件的 HTML 转换为 pdf 时,出现此错误。我在本地(即Windows)中尝试了相同的操作,它成功完成了。我不明白为什么这个错误会出现在 ubuntu 服务器中。请参考下面的代码片段

import * as puppeteer from 'puppeteer';
await puppeteer.launch({
          headless: true,
          executablePath: '/usr/bin/google-chrome',
          args: ['--no-sandbox']
        });
      const page = await browser.newPage();
      await page.setContent(renderedTemplate); // Here I'm pushing the html content into puppeteer.
      const css = `
                @media print {
                    .new-page {
                        page-break-before: always;
                    }
                }
            `;
      await page.addStyleTag({ content: css });
      const pdfBuffer = await page.pdf({
        format: 'A4',
        printBackground: true,
        displayHeaderFooter: true,
        headerTemplate: headerTemplate,
        footerTemplate: footerTemplate,
        margin: { top: '100px', bottom: '100px', left: '15px', right: '15px' },
        timeout: 600000,
      }); // PDF conversion.
      await browser.close(); // Closing the connection.

我安装了 chrome 作为 docker 执行的一部分。请参考以下

RUN wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb \
    && apt-get install -y ./google-chrome-stable_current_amd64.deb \
    && rm google-chrome-stable_current_amd64.deb \
    && echo "Chrome: " && google-chrome --version

注意:我尝试了无头作为

true
new
。这两种情况,我都得到了同样的错误。

node.js docker ubuntu pdf-generation
1个回答
0
投票

我正在使用这些参数启动浏览器:

"--no-sandbox", "--disable-setuid-sandbox"
。它解决了我的打印问题

© www.soinside.com 2019 - 2024. All rights reserved.