HTML到PDF
我在AWS Lamda上使用Nodejs16环境,并将HTML转换为PDF。
我使用了很多库,如puppeteer和chrome-aws lambda。
木偶师正在本地或服务器上工作。但它不适用于aws-lambda或serverless。
const chromium = require('chrome-aws-lambda'); const puppeteer = require('puppeteer-core'); exports.handler = async (event) => { try { const browser = await puppeteer.launch({ executablePath: await chromium.executablePath, args: chromium.args, headless: true, }); const page = await browser.newPage(); await page.setContent("<html><body><h5>Hello World!</h5></body></html>") const pdf = await page.pdf({ format: "A4", path: "output.pdf" }); return {statusCode: 200}; } catch (error) { console.error(error); return {statusCode: 500}; } };
出现此错误
Failed to launch the browser process!\n/tmp/chromium: error while loading shared libraries: libnss3.so: cannot open shared object file: No such file or directory\n\n\nTROUBLESHOOTING:
在过去,我有一些运气 html-pdf 库——根据HTML页面的简单程度或复杂程度,您可以尝试以下操作:
html-pdf
const HtmlPdf = require("html-pdf"); const html = ` <div> <h3>Title</h3> <hr> <p>this is only a test!</p> </div>`; HtmlPdf.create(html).toBuffer(function(err, buff) { if (err) { console.error(err); return; } console.log(buff.toString()); });
显然,它不会像无头浏览器那样支持HTML规范! 祝你好运