需求
因某种缘由,需要将多个PDF文件合并成一个,方便打印。
分析
将文件夹里面的PDF文件名称遍历出来,将所有的文件合并成一个文件即可。
为求简单实现,使用node.js
实现就好。
运行环境
node v16.17
pnpm v8.5
开发步骤
一.搭建工程
mkdir multil-pdf-to-one
cd multil-pdf-to-one
pnpm init
二.安装依赖
pnpm add pdf-merger-js
pnpm add fs-extra
三.编写代码
1.将指定目录下的PDF文件名遍历并存如数组中
// src/index.js
const PDFMerger = require("pdf-merger-js");
const { opendir, ensureDir } = require("fs-extra");
const { join, extname } = require("path");
const scanDir = async (searchPath) => {
const pdfPaths = [];
try {
const dir = await opendir(searchPath);
for await (const dirent of dir) {
if (dirent.isFile) {
extname(dirent.name).toLocaleLowerCase() === ".pdf" &&
pdfPaths.push(join(searchPath, dirent.name));
}
}
} catch (err) {
console.error(err);
}
return pdfPaths;
};
2.进行合并操作
// src/index.js
const PDFMerger = require("pdf-merger-js");
const { opendir, ensureDir } = require("fs-extra");
const { join, extname } = require("path");
const doMerge = async () => {
const pdfPaths = await scanDir("src/0728");
const merger = new PDFMerger();
for (const ele of pdfPaths) {
await merger.add(ele);
}
await ensureDir("dist");
await merger.save("dist/merged-0728.pdf");
};
3.完整的代码
// src/index.js
const PDFMerger = require("pdf-merger-js");
const { opendir, ensureDir } = require("fs-extra");
const { join, extname } = require("path");
const scanDir = async (searchPath) => {
const pdfPaths = [];
try {
const dir = await opendir(searchPath);
for await (const dirent of dir) {
if (dirent.isFile) {
extname(dirent.name).toLocaleLowerCase() === ".pdf" &&
pdfPaths.push(join(searchPath, dirent.name));
}
}
} catch (err) {
console.error(err);
}
return pdfPaths;
};
const doMerge = async () => {
const pdfPaths = await scanDir("src/0728");
const merger = new PDFMerger();
for (const ele of pdfPaths) {
await merger.add(ele);
}
await ensureDir("dist");
await merger.save("dist/merged-0728.pdf");
};
doMerge();
附上一张漂亮的代码截图
4.运行代码
node src/index.js