用nodejs把多个PDF文件成为一个PDF文件

1、先下载 pdf-lib包

cnpm install  pdf-lib

2、新建文件夹pdf 文件夹和pool文件夹

pdf文件夹是存放pdf原始文件,pool是合并后的文件夹

3、复制代码到pdf.js

const path = require('path')
const fs = require("fs");

// 获取要合并的pdf集合
const files = fs.readdirSync('./pdf')
// 要合并的PDF文件存放路径
const filesp = path.resolve(__dirname,'./pdf')

// 改路径
let sourceFiles = [];
files.forEach(v => {
   let file = filesp + `\\` +v;
   sourceFiles.push(file)
});

/**
 * 合并多个PDF为一个PDF文件
 * 这个是使用的pdf-lib 对PDF进行合并
 */
const { PDFDocument } = require('pdf-lib')
const mergePDF = async ({ sourceFiles, outputFile }) => {
  const pdfDoc = await PDFDocument.create()
  for (let i = 0; i < sourceFiles.length; i++) {
    const localPath = sourceFiles[i]
    const PDFItem = await PDFDocument.load(fs.readFileSync(localPath))
    for (let j = 0; j < PDFItem.getPageCount(); j++) {
      const [PDFPageItem] = await pdfDoc.copyPages(PDFItem, [j])
      pdfDoc.addPage(PDFPageItem)
    }
  }
  const pdfBytes = await pdfDoc.save()
  fs.writeFileSync(outputFile, pdfBytes)

}

const go = async () => {
  const time = Date.now()
  await mergePDF({
    sourceFiles,
    // 合并的文件路径
    outputFile: path.resolve(__dirname, './pool/output2.pdf'
    
    ),
  })
  console.log(`test2耗时:${Date.now() - time}ms`)
}

go()


4、运行代码

node pdf.js
Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐