Introduction
การรวมบิลเป็นกระบวนการทำงานที่รวมเอกสารการเงินหลายฉบับเป็น PDF ไฟล์เดียวโดยใช้ GroupDocs.Merger for Python ทีมการเงินมักต้องส่งใบแจ้งหนี้พร้อมกับบันทึกการจัดส่ง รายงานการให้บริการ และเงื่อนไขการรับประกัน แต่การต่อไฟล์ด้วยตนเองทำให้เกิดข้อผิดพลาดและเสียเวลา GroupDocs.Merger จะทำงานนี้โดยอัตโนมัติ ทำให้แน่ใจว่าการแนบทุกไฟล์ถูกจัดลำดับอย่างถูกต้อง สามารถเพิ่มการป้องกันได้ตามต้องการ และส่งออกเป็น PDF ที่สะอาดเรียบร้อยเป็นไฟล์เดียว
ในบทเรียนนี้คุณจะได้เรียนรู้วิธี:
- รวมใบแจ้งหนี้ PDF ธรรมดากับไฟล์สนับสนุนจำนวนใดก็ได้
- จัดการรูปแบบไฟล์ผสมเช่นรูป JPG และสัญญา DOCX
- เปิดใบแจ้งหนี้ที่มีรหัสผ่าน เพิ่มไฟล์แนบ แล้วใส่รหัสผ่านใหม่อีกครั้ง
- เลือกเฉพาะหน้าที่ต้องการจากไฟล์แนบขนาดใหญ่เพื่อให้ชุดไฟล์สุดท้ายกระชับ
ฉันเจอสถานการณ์นี้เมื่อไตรมาสที่แล้ว ระบบบัญชีของเราสร้างใบแจ้งหนี้ที่มีรหัสผ่านและทีมกฎหมายเพิ่มเอกสารการรับประกันหลายหน้าในรูป DOCX โค้ดด้านล่างแก้ปัญหาได้ภายในห้านาที
When does it make sense to merge a password‑protected invoice with other documents?
หลายองค์กรเข้ารหัสใบแจ้งหนี้เพื่อให้เป็นไปตามข้อกำหนดการปฏิบัติตามกฎระเบียบ เมื่อจำเป็นต้องส่งใบแจ้งหนี้ให้ลูกค้าพร้อมกับไฟล์แนบที่ไม่ได้เข้ารหัส (ใบเสร็จ, เงื่อนไข, รูปภาพ) รหัสผ่านต้นฉบับต้องถูกถอดออกเพื่อทำการรวมแล้วจึงใส่รหัสผ่านใหม่กับไฟล์สุดท้าย GroupDocs.Merger ให้คุณส่งรหัสผ่านปลดล็อกผ่าน LoadOptions รวมไฟล์เพิ่มเติม แล้วปกป้อง PDF ที่รวมแล้วด้วย AddPasswordOptions วิธีนี้ทำให้ความลับของข้อมูลยังคงอยู่ในขณะที่ส่งเอกสารเดียวที่เปิดได้ง่าย
Prerequisites
- Python 3.8+ (ผ่าน .NET bridge)
- GroupDocs.Merger for Python – ติดตั้งด้วย:
pip install groupdocs-merger
- PDF ใบแจ้งหนี้หลัก (
invoice.pdf) และรายการเส้นทางไฟล์แนบ - (ไม่บังคับ) รหัสผ่านสำหรับใบแจ้งหนี้ต้นฉบับและ PDF ผลลัพธ์
Step 1: Basic Consolidation of PDF Attachments
กรณีที่ง่ายที่สุดคือการรวมใบแจ้งหนี้ PDF กับ PDF อื่น ๆ, รูปภาพ หรือไฟล์ Word API จะทำการแปลงอินพุตที่ไม่ใช่ PDF เป็น PDF ก่อนรวม
import groupdocs_merger as gm
# Paths to source files
invoice = "invoice.pdf"
attachments = ["delivery_note.pdf", "service_report.pdf"]
output = "billing_package.pdf"
with gm.Merger(invoice) as merger:
for path in attachments:
merger.join(path) # Normalises each file to PDF and appends it
merger.save(output)
Key points:
gm.Mergerถูกสร้างด้วยเอกสารหลัก (ใบแจ้งหนี้)join()ยอมรับรูปแบบใดก็ได้ที่รองรับ; ไลบรารีจะจัดการการแปลงให้เองsave()จะเขียน PDF ที่รวมแล้วไปยังเส้นทางที่ระบุ
Step 2: Consolidating Mixed‑Format Attachments
แพ็คเกจบิลจริงมักมีภาพสแกน (JPG) และสัญญากฎหมาย (DOCX) โค้ดเดียวกันทำงานได้เพราะ GroupDocs.Merger จะทำการแปลงทุกไฟล์แนบเป็น PDF โดยอัตโนมัติ
attachments = ["receipt.jpg", "warranty_terms.docx", "extra_clause.pdf"]
output = "billing_mixed.pdf"
with gm.Merger(invoice) as merger:
for path in attachments:
merger.join(path) # JPG and DOCX are converted to PDF automatically
merger.save(output)
Why it matters: การแปลงทุกอย่างเป็น PDF ทำให้ผู้รับไม่ต้องสลับโปรแกรมดูไฟล์หลายประเภท ส่งมอบประสบการณ์ที่ราบรื่น
Step 3: Handling Password‑Protected Invoices
หากใบแจ้งหนี้ถูกเข้ารหัส ให้ระบุรหัสผ่านผ่าน LoadOptions หลังจากรวมแล้วคุณสามารถใส่รหัสผ่านใหม่ให้ไฟล์ PDF สุดท้ายด้วย AddPasswordOptions
import io
invoice_password = "Inv$2026"
output_password = "Bill$2026"
load_options = gm.domain.options.LoadOptions(invoice_password)
buffer = io.BytesIO()
# Open the protected invoice, join attachments, write to memory buffer
with gm.Merger(invoice, load_options) as merger:
for path in attachments:
merger.join(path)
merger.save(buffer)
# Re‑secure the merged document
add_pwd = gm.domain.options.AddPasswordOptions(output_password)
buffer.seek(0)
with gm.Merger(buffer) as merger:
merger.add_password(add_pwd)
merger.save(output)
Key points:
LoadOptionsปลดล็อก PDF ต้นฉบับ- ผลลัพธ์ที่รวมแล้วจะเขียนลงในสตรีมหน่วยความจำ (
BytesIO) ก่อน AddPasswordOptionsใส่รหัสผ่านใหม่ให้ไฟล์สุดท้าย
Step 4: Selecting Specific Pages from Attachments
บางครั้งเพียงส่วนหนึ่งของไฟล์แนบเท่านั้นที่จำเป็น (เช่นสองหน้าตแรกของรายงานการให้บริการที่ยาว) ใช้ PageJoinOptions เพื่อระบุช่วงหน้าแบบ 1‑based ที่ต้องการรวม
page_picks = [
("service_report.pdf", 1, 2), # Include pages 1‑2 only
("terms_and_conditions.pdf", 3, 3) # Include only page 3
]
output = "billing_selected_pages.pdf"
with gm.Merger(invoice) as merger:
for path, first, last in page_picks:
options = gm.domain.options.PageJoinOptions(first, last)
merger.join(path, options)
merger.save(output)
Result: PDF สุดท้ายจะประกอบด้วยใบแจ้งหนี้และเฉพาะหน้าที่เลือกเท่านั้น ทำให้ชุดไฟล์มีขนาดเบา
Best Practices & Tips
- Performance: สำหรับชุดข้อมูลขนาดใหญ่ ให้เปิดใช้งานเฉพาะตัวเลือกที่จำเป็น (เช่นหลีกเลี่ยงการแปลงรูปแบบที่ไม่ต้องการ)
- Memory Management: ใช้คำสั่ง
withเสมอเพื่อให้ Merger ปล่อยทรัพยากรอย่างรวดเร็ว - Security: ใส่การเข้ารหัสใหม่หลังการรวมเพื่อรักษาความลับของใบแจ้งหนี้ต้นฉบับ
- File Limits: GroupDocs.Merger รองรับ PDF ขนาดสูงสุด 2 GB; ไฟล์ที่ใหญ่กว่านั้นอาจต้องแบ่งก่อนรวม
Conclusion
GroupDocs.Merger for Python ให้ API ที่ง่ายต่อการแปลงชุดเอกสารบิลที่กระจัดกระจายให้เป็นแพ็คเกจ PDF มืออาชีพไฟล์เดียว ไม่ว่าคุณจะทำงานกับ PDF ธรรมดา, สื่อผสม, ใบแจ้งหนี้ที่มีรหัสผ่าน, หรือจำเป็นต้องตัดหน้าไฟล์แนบให้เหลือเฉพาะส่วนสำคัญ ไลบรารีจะจัดการงานหนักให้คุณในไม่กี่บรรทัดโค้ด
Next steps:
- สำรวจรายการรูปแบบที่รองรับทั้งหมดใน [documentation][DOCS_URL]
- เรียนรู้วิธีเพิ่มลายน้ำหรือลายเซ็นดิจิทัลให้