问题描述
我有一个网络应用程序,可以生成相当大的 PDF 文档,可能有 100 页甚至更多。
工作流程是这样的:
import { PDFDocument } from 'pdf-lib';
const pdfHtml = await nunjucks.render(...);
const thebrowser = await puppeteer.launch({
args: [
'--disable-dev-shm-usage','--no-first-run','--no-sandBox','--no-zygote','--single-process',],headless: true
});
const page = await thebrowser.newPage();
awaut page.setContent(`${pdfHtml}`,{ waitUntil: 'networkidle0' });
const frontPage: Buffer = await page.pdf({
... someOptions,pageRanges: '1'
});
const pdfpages: Buffer = await page.pdf({
... someOptions,pageRanges: '2-',footerTemplate: ...,});
const pdfDoc = await PDFDocument.create();
const coverDoc = await PDFDocument.load(frontPage);
const [coverPage] = await pdfDoc.copyPages(coverDoc,[0]);
pdfDoc.addPage(coverPage);
const mainDoc = await PDFDocument.load(reportPages);
for (let i = 0; i < mainDoc.getPageCount(); i++) {
const [aMainPage] = await pdfDoc.copyPages(mainDoc,[i]);
pdfDoc.addPage(aMainPage);
}
pdfBytes = Buffer.from(await pdfDoc.save());
// handle the bytes here
当 PDF 变得非常大时,此操作将花费相当长的时间并使用大量内存,从而使 API 停顿直至完成。我能做些什么来优化它?或者我可以使用其他工具来避免 API 停顿吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)