当我尝试在 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
。这两种情况,我都得到了同样的错误。
我正在使用这些参数启动浏览器:
"--no-sandbox", "--disable-setuid-sandbox"
。它解决了我的打印问题