当前位置:首页 > 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文件时考虑内存限制,可能需要分块处理。服务器端实现通常比浏览器端更可靠,特别是对于大文件。

js实现合并pdf

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

标签: jspdf
分享给朋友:

相关文章

vue 实现pdf

vue 实现pdf

在Vue中实现PDF功能 在Vue项目中实现PDF功能通常涉及PDF生成、预览或下载。以下是几种常见实现方式: 使用vue-pdf库预览PDF 安装依赖: npm install vue-pdf…

js实现vr

js实现vr

使用WebXR API实现VR体验 WebXR是浏览器中实现VR和AR体验的标准API,它取代了早期的WebVR。现代浏览器如Chrome、Edge和Firefox已支持WebXR。 // 初始化W…

js实现祖玛

js实现祖玛

实现祖玛游戏的核心思路 祖玛游戏的核心玩法是发射彩色珠子,形成三个或以上相同颜色的珠子即可消除。以下是使用JavaScript实现的基本框架。 游戏初始化 创建画布并初始化游戏状态: const…

利用js实现

利用js实现

使用 JavaScript 实现 在 JavaScript 中,可以通过多种方式实现功能,具体取决于需求。以下是几种常见的方法: 方法一:使用原生 JavaScript // 示例代码…

js实现下拉刷新

js实现下拉刷新

监听触摸事件 通过监听 touchstart、touchmove 和 touchend 事件来检测用户下拉手势。记录触摸起始位置和移动距离。 let startY = 0; let curr…

js实现滑动

js实现滑动

实现滑动效果的方法 在JavaScript中实现滑动效果可以通过多种方式完成,以下是几种常见的实现方法: 使用CSS过渡和JavaScript触发 通过CSS定义过渡效果,JavaScript控制触…