NodeJS AWS Lambda中的HTML转PDF

iih3973s  于 2023-11-17  发布在  Node.js
关注(0)|答案(1)|浏览(154)

bounty已结束。回答此问题可获得+50声望奖励。奖励宽限期将在2小时后结束。rahulfaujdar正在寻找此问题的更详细的答案

  • HTML转PDF*

我在AWS Lamda上使用Nodejs 16环境,并将HTML转换为PDF。
我使用了很多库,比如puppeteer和chrome-aws-lambda。
puppeteer是工作在本地或服务器.但它不是工作在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:

7cjasjjr

7cjasjjr1#

在过去,我在html-pdf库上有一些运气--取决于你的HTML页面有多简单或多复杂,你可以尝试这样的东西:

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规范!祝你好运。

相关问题