บทความภาคต่อจาก ชุดเดิมที่ เติมเลขหน้าได้แล้ว เราจึงคิดว่า เราควรจบทุกอย่างด้วยคำสั่งชุดเดียว เลยออกแบบให้มีโปรแกรมรวมไฟล์ที่มาจาก 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