บทความภาคต่อจาก ชุดเดิมที่ เติมเลขหน้าได้แล้ว เราจึงคิดว่า เราควรจบทุกอย่างด้วยคำสั่งชุดเดียว เลยออกแบบให้มีโปรแกรมรวมไฟล์ที่มาจาก command line ได้ด้วย คือการใช้งาน รวมไฟล์หลายๆ ไฟล์ แล้ว ก็มา เพิ่มเลขหน้า จะได้จบงาน
สำหรับ บทความนี้ การรวมไฟล์ PDF หลายไฟล์เป็นไฟล์เดียว เราสามารถใช้ Node.js และไลบรารี pdf-lib ในการจัดการและรวมไฟล์เหล่านั้นเข้าด้วยกันได้ง่าย ๆ บทความนี้จะแนะนำขั้นตอนการทำงานแบบ step-by-step รวมถึงการแปลงโปรแกรมเป็นไฟล์ .exe สำหรับใช้งานบน Windows
ขั้นตอนที่ 1: การติดตั้งไลบรารีที่จำเป็น
ก่อนอื่นให้ทำการติดตั้งไลบรารีที่จำเป็น ได้แก่ pdf-lib และ commander ซึ่งใช้ในการจัดการไฟล์ PDF และการรับค่า arguments จาก command line
npm install pdf-lib commander
ขั้นตอนที่ 2: สร้างสคริปต์สำหรับรวมไฟล์ PDF
สร้างไฟล์ merge-pdfs.js แล้วเพิ่มโค้ดต่อไปนี้ลงไป:
const fs = require('fs');
const path = require('path');
const { PDFDocument } = require('pdf-lib');
const { Command } = require('commander');
async function mergePdfs(inputDir, outputPdfPath) {
const pdfDoc = await PDFDocument.create();
const files = fs.readdirSync(inputDir).filter(file => file.endsWith('.pdf'));
for (const file of files) {
const filePath = path.join(inputDir, file);
const pdfBytes = fs.readFileSync(filePath);
const pdfToMerge = await PDFDocument.load(pdfBytes);
const [copiedPages] = await pdfDoc.copyPages(pdfToMerge, pdfToMerge.getPageIndices());
copiedPages.forEach(page => {
pdfDoc.addPage(page);
});
}
const mergedPdfBytes = await pdfDoc.save();
fs.writeFileSync(outputPdfPath, mergedPdfBytes);
}
const program = new Command();
program
.requiredOption('-i, --input-dir ', 'input directory containing PDF files')
.requiredOption('-o, --output ', 'output PDF file path')
.parse(process.argv);
const options = program.opts();
const inputDir = options.inputDir;
const outputPdfPath = options.output;
mergePdfs(inputDir, outputPdfPath)
.then(() => console.log('PDF files merged successfully'))
.catch(err => console.error('Error:', err));
โค้ดนี้จะทำการรวมไฟล์ PDF ทั้งหมดที่อยู่ในไดเรกทอรีที่กำหนดและบันทึกเป็นไฟล์ PDF ไฟล์เดียวที่ระบุ
ขั้นตอนที่ 3: การใช้งานสคริปต์
หลังจากสร้างไฟล์สคริปต์แล้ว คุณสามารถรันสคริปต์ได้โดยใช้คำสั่งดังนี้:
node merge-pdfs.js --input-dir <ไดเรกทอรีที่มีไฟล์ PDF> --output <ไฟล์ PDF ที่ต้องการบันทึก> node merge-pdfs.js --input-dir ./pdf-files --output merged.pdf
ขั้นตอนที่ 4: การสร้างไฟล์ [.exe]
หากต้องการแปลงโปรแกรม Node.js เป็นไฟล์ [.exe] สำหรับใช้งานบน Windows สามารถใช้ไลบรารี [pkg] ได้
[1] ติดตั้ง [pkg]npm install -g pkg[2] แก้ไข [package.json] เพื่อให้ [pkg] สามารถหาโมดูลที่จำเป็นได้
{
"name": "merge-pdfs",
"version": "1.0.0",
"main": "merge-pdfs.js",
"scripts": {
"start": "node merge-pdfs.js"
},
"bin": "merge-pdfs.js",
"pkg": {
"scripts": [
"merge-pdfs.js"
]
},
"dependencies": {
"pdf-lib": "^1.17.1",
"commander": "^8.0.0"
}
}
[3] สร้างไฟล์ [.exe] ด้วยคำสั่ง [pkg]
pkg . --targets node14-win-x64 --output merge-pdfs.exe[4] ใช้ไฟล์ .exe ที่สร้างขึ้น
merge-pdfs.exe --input-dir <ไดเรกทอรีที่มีไฟล์ PDF> --output <ไฟล์ PDF ที่ต้องการบันทึก>
บทสรุป
บทความนี้แสดงขั้นตอนการรวมไฟล์ PDF หลายไฟล์เป็นไฟล์เดียวโดยใช้ Node.js และไลบรารี [pdf-lib] พร้อมกับการรับค่า arguments จาก command line ด้วย commander และการแปลงโปรแกรมเป็นไฟล์ .exe สำหรับใช้งานบน Windows หวังว่าบทความนี้จะเป็นประโยชน์สำหรับผู้ที่ต้องการจัดการไฟล์ PDF ด้วย Node.js