提示:pdf拆分
前言
pdflib_11">一、pdf-lib
pdf-lib
npm install pdf-lib --save-dev
pdf_17">二、pdf拆分功能
index.js
// 启动express服务
const express = require('express');
const app = express();app.listen(3000,()=>{console.log('http://localhost:3000');
});// 文件读写
const fs = require('fs');
// 路径
const path = require('path');
// pdf-lib
const pdfLib = require('pdf-lib');
// PDFDocument
const pdfDoc = pdfLib.PDFDocument;// 拆分pdf文件
const splitPdf = async (pdfPath,name) => {// 文件bytesconst bytes = await fs.promises.readFile(pdfPath);// pdf数据const pdfData = await pdfDoc.load(bytes)// pdf页数const pages = pdfData.getPages().length;for (let i = 0; i < pages; i++) {const doc = await pdfDoc.create();const [ page ] = await doc.copyPages(pdfData, [i])doc.addPage(page);const pdfBytes = await doc.save()await fs.promises.writeFile(`./output/${name||'pdf'}-${i + 1}.pdf`, pdfBytes);}console.log(`拆分为${pages}个pdf文件`)
}// 扫描文件夹下的.pdf文件
const searchPdf = (dir, callback) => {// 读取文件夹下数据fs.readdir(dir, (fileErr, files) => {if (fileErr)return console.error('Error:', fileErr);// 遍历文件夹下的文件files.forEach((file) => {// file路径let fullPath = path.join(dir, file);fs.stat(fullPath, async (err, state) => {if (err)return console.error('Error:', err);// 如果是文件夹,继续扫描读取到的文件夹if (state.isDirectory()) return searchPdf(fullPath);// 是否为.pdf文件if (path.extname(file).toLowerCase() == '.pdf') {console.log('扫描到pdf文件,路径:', fullPath,file);// 拆分pdf文件let name = file.split('.pdf')[0];await splitPdf(fullPath,name);}});});});
}searchPdf('./source');
三、双击运行bat文件
run.bat
@echo off
cd /d "%~dp0"
node index.js
四、项目结构
五、使用方法
六、效果
总结
踩坑路漫漫长@~@