当前位置:首页 > JavaScript

js实现pdf合并

2026-01-30 22:02:44JavaScript

使用PDF-Lib库合并PDF

安装PDF-Lib库:

npm install pdf-lib

代码示例:

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

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

  for (const filePath of filePaths) {
    const pdfBytes = fs.readFileSync(filePath);
    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库

安装库:

npm install pdf-merger-js

实现代码:

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

const merge = async (pdfs, output) => {
  for (const pdf of pdfs) {
    await merger.add(pdf);
  }
  await merger.save(output);
};

merge(['1.pdf', '2.pdf'], 'merged.pdf');

浏览器端实现方案

使用pdf.js和File API:

const mergePdfsInBrowser = async (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' });
};

使用Node.js原生模块

对于简单场景可尝试以下方法:

js实现pdf合并

const fs = require('fs');
const { exec } = require('child_process');

function mergeWithPDFtk(inputs, output) {
  exec(`pdftk ${inputs.join(' ')} cat output ${output}`, (err) => {
    if (err) throw err;
  });
}

注意事项

  • 确保处理大文件时有足够内存
  • 浏览器端方案需要考虑文件大小限制
  • 所有异步操作需要适当处理错误
  • 生产环境建议添加进度指示

以上方案中,PDF-Lib提供了最全面的功能支持,包括修改现有PDF内容的能力。pdf-merger-js则提供了更简单的API接口。浏览器端方案需要用户主动选择文件,无法直接访问本地文件系统。

标签: jspdf
分享给朋友:

相关文章

js实现vue

js实现vue

Vue.js 简介 Vue.js 是一个渐进式 JavaScript 框架,用于构建用户界面。其核心库专注于视图层,易于与其他库或现有项目整合。 实现 Vue.js 的基本步骤 安装 Vue.j…

js实现乘

js实现乘

JavaScript 实现乘法运算 在 JavaScript 中实现乘法运算可以通过多种方式完成,包括基本运算符、函数封装以及高级算法(如大数乘法)。以下是几种常见方法: 使用基本乘法运算符 Jav…

js防抖和节流实现

js防抖和节流实现

防抖(Debounce)的实现 防抖的核心思想是在事件被触发后,延迟执行回调函数。如果在延迟时间内再次触发事件,则重新计时。适用于输入框搜索、窗口大小调整等场景。 function debounce…

js分组实现

js分组实现

分组实现方法 在JavaScript中,可以通过多种方式实现数组或对象的分组操作。以下是几种常见的方法: 使用Array.prototype.reduce() 通过reduce方法可以轻松实现数组分…

js实现图表

js实现图表

在JavaScript中实现图表通常使用流行的图表库,以下是几种常见的方法和工具: 使用Chart.js Chart.js是一个简单灵活的库,适合快速生成响应式图表。安装方式包括CDN引入或npm安…

js实现选题

js实现选题

实现选题功能的JavaScript方法 基础实现方案 使用数组存储选项,通过随机索引选取: const options = ['选项A', '选项B', '选项C', '选项D']; const r…