当前位置:首页 > JavaScript

js实现合并pdf

2026-02-02 18:26:21JavaScript

使用pdf-lib库合并PDF

pdf-lib是一个纯JavaScript库,可以在浏览器和Node.js环境中运行。它支持创建、修改和合并PDF文件。

安装pdf-lib:

npm install pdf-lib

合并PDF示例代码:

const { PDFDocument } = require('pdf-lib');
const fs = require('fs');

async function mergePDFs(pdfPaths, outputPath) {
  const mergedPdf = await PDFDocument.create();

  for (const pdfPath of pdfPaths) {
    const pdfBytes = fs.readFileSync(pdfPath);
    const pdfDoc = await PDFDocument.load(pdfBytes);
    const pages = await mergedPdf.copyPages(pdfDoc, pdfDoc.getPageIndices());
    pages.forEach(page => mergedPdf.addPage(page));
  }

  const mergedPdfBytes = await mergedPdf.save();
  fs.writeFileSync(outputPath, mergedPdfBytes);
}

// 使用示例
mergePDFs(['file1.pdf', 'file2.pdf'], 'merged.pdf');

使用pdf-merger-js库

pdf-merger-js是另一个专门用于合并PDF的JavaScript库,API更简洁。

安装:

npm install pdf-merger-js

使用示例:

const PDFMerger = require('pdf-merger-js');

async function mergePDFs(pdfPaths, outputPath) {
  const merger = new PDFMerger();

  for (const pdfPath of pdfPaths) {
    await merger.add(pdfPath);
  }

  await merger.save(outputPath);
}

mergePDFs(['file1.pdf', 'file2.pdf'], 'merged.pdf');

浏览器端实现

在浏览器环境中合并PDF需要注意文件加载方式:

async function mergePDFsInBrowser(pdfFiles) {
  const { PDFDocument } = PDFLib;
  const mergedPdf = await PDFDocument.create();

  for (const file of pdfFiles) {
    const arrayBuffer = await file.arrayBuffer();
    const pdfDoc = await PDFDocument.load(arrayBuffer);
    const pages = await mergedPdf.copyPages(pdfDoc, pdfDoc.getPageIndices());
    pages.forEach(page => mergedPdf.addPage(page));
  }

  const mergedPdfBytes = await mergedPdf.save();
  return new Blob([mergedPdfBytes], { type: 'application/pdf' });
}

// 使用示例
const fileInput = document.getElementById('pdf-files');
fileInput.addEventListener('change', async (e) => {
  const mergedPdf = await mergePDFsInBrowser(Array.from(e.target.files));
  const url = URL.createObjectURL(mergedPdf);
  window.open(url);
});

注意事项

确保处理大型PDF文件时考虑内存限制,可能需要分块处理。服务器端实现通常比浏览器端更可靠,特别是对于大文件。

所有方法都返回Promise,需要使用async/await或.then()处理异步操作。错误处理应该包括文件读取失败和PDF解析错误的情况。

js实现合并pdf

标签: jspdf
分享给朋友:

相关文章

js实现轮播图

js实现轮播图

轮播图实现方法 基础HTML结构 <div class="slider"> <div class="slides"> <img src="image1.jpg…

js实现分页

js实现分页

分页的基本实现思路 在JavaScript中实现分页功能通常需要结合前端和后端逻辑。前端负责渲染分页控件和处理用户交互,后端负责提供分页数据。 前端分页实现 纯前端分页适用于数据量较小的情况,可以直…

js实现计算器

js实现计算器

实现基础计算器功能 使用JavaScript创建一个基础计算器需要处理数字输入、运算符逻辑和结果显示。以下是一个简单的实现示例: let currentInput = '0'; let previ…

js实现继承

js实现继承

原型链继承 通过将子类的原型指向父类的实例实现继承。子类实例可以访问父类原型上的属性和方法。 function Parent() { this.name = 'parent'; } Paren…

js 实现倒计时

js 实现倒计时

实现倒计时的基本方法 使用 JavaScript 实现倒计时可以通过 setInterval 或 setTimeout 结合日期计算来完成。以下是两种常见实现方式。 使用 setInterval 实…

js实现复制功能

js实现复制功能

使用 document.execCommand 方法 这种方法适用于较旧的浏览器,但在现代浏览器中可能被逐步淘汰。通过创建一个临时的 textarea 元素,将文本内容放入其中,然后执行复制命令。…