我想知道如何使用jsPDF将两个(或多个)PDF文件合并成一个文件,然后用用户的浏览器的pdf浏览器来显示。
我的需求是让打印一组文件的过程变得更容易。与其逐一打印,不如把它们合并起来,打印成一个文件。.
我在Stack Overflow上看了这个问题,但对我帮助不大,因为在这个案例中,他们是从HTML内容中创建pdf的,而在我的案例中,我必须将一组pdf文件合并在一起。将两个用jsPDF生成的PDF文件合并成一个文件。
我可以从一个url中获取我的PDF文件,或者也可以从它们中获取原始内容(base64代码),所以我想知道是否有一种方法可以使用这个库来实现它。如果有的话,我只需要知道使用什么方法,或者提供文档的链接(我也看到过文档,但没有找到)。
非常感谢您的回答,任何帮助都将被感激。Regards!
你可以把你的jsPDF文档变成一个数组缓冲区(看这里)
const doc = new jsPDF('p', 'mm', 'a4');
...
const arrayBuffer = doc.output('arraybuffer');
然后使用所给的解决方案 此处
async mergePdfs(pdfsToMerges: ArrayBuffer[]) {
const mergedPdf = await PDFDocument.create();
const actions = pdfsToMerges.map(async pdfBuffer => {
const pdf = await PDFDocument.load(pdfBuffer);
const copiedPages = await mergedPdf.copyPages(pdf, pdf.getPageIndices());
copiedPages.forEach((page) => {
// console.log('page', page.getWidth(), page.getHeight());
// page.setWidth(210);
mergedPdf.addPage(page);
});
});
await Promise.all(actions);
const mergedPdfFile = await mergedPdf.save();
return mergedPdfFile;
}