我编写了一个 NodeJS 类,它应该从 html 字符串中创建一个 PDF 文件。该类部署在 AWS Lambda 上。它基于 html-pdf ( https://www.npmjs.com/package/html-pdf )。
const {readFileSync} = require('fs');
const pdf = require('html-pdf');
process.env['PATH'] = process.env['PATH'] + ':' + process.env['LAMBDA_TASK_ROOT'];
const options = { format: 'Letter' };
const createPDF = async (fileName, data) => {
let text = readFileSync('./templates/' + fileName + '.html','utf8');
data.forEach(element => {
text = text.replace("{{{" + element[0] + "}}}",element[1]);
});
console.log(text);
return new Promise(function(resolve, reject) {
pdf.create(text, options).toBuffer(function (err, buffer) {
if (!err)
resolve(buffer);
else
console.log(buffer)
}); …Run Code Online (Sandbox Code Playgroud) 我有一个 Firebase 函数来创建 PDF 文件。最近,由于“Chrome 修订版”而超时?我既不明白错误消息,也不明白出了什么问题。当我在 MacOS 下将其本地部署时,该功能有效。
TimeoutError: Timed out after 30000 ms while trying to connect to the browser! Only Chrome at revision r818858 is guaranteed to work.
at Timeout.onTimeout (/workspace/node_modules/puppeteer/lib/cjs/puppeteer/node/BrowserRunner.js:204:20)
at listOnTimeout (internal/timers.js:549:17)
at processTimers (internal/timers.js:492:7)
Run Code Online (Sandbox Code Playgroud)
功能:
const puppeteer = require('puppeteer');
const createPDF = async (html, outputPath) => {
let pdf;
try {
const browser = await puppeteer.launch({
args: ['--no-sandbox']
});
const page = await browser.newPage();
await page.emulateMediaType('screen');
await page.setContent(html, {
waitUntil: 'networkidle0'
});
pdf = await …Run Code Online (Sandbox Code Playgroud)