Introduction
איחוד חשבוניות הוא תהליך עבודה המשלב מספר מסמכים פיננסיים לקובץ PDF יחיד באמצעות GroupDocs.Merger for Python. צוותי הכספים לעיתים קרובות צריכים לשלוח חשבונית יחד עם תעודות משלוח, דוחות שירות ותנאי אחריות, אך חיבור קבצים ידני גורם לטעויות ובזבוז זמן. GroupDocs.Merger מא automatizes את התהליך, מבטיח שכל קובץ מצורף בסדר הנכון, אפשרות לאבטחה, ונמסר כ‑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)
- 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 המקורי.- תוצאת המיזוג נכתבת תחילה ל‑stream בזיכרון (
BytesIO). AddPasswordOptionsמיישמת סיסמה חדשה לקובץ הסופי.
Step 4: Selecting Specific Pages from Attachments
לעיתים רק חלק מצורף רלוונטי (לדוגמה, שני העמודים הראשונים של דוח שירות ארוך). השתמשו ב‑PageJoinOptions כדי לציין טווח כולל מבוסס 1.
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.
- למדו כיצד להוסיף סימני מים או חתימות דיגיטליות ל‑PDF הממוזג ([API reference][API_REF_URL]).
- עיינו בפרויקטים לדוגמה ב‑GitHub לתרחישים מתקדמים יותר ([Examples Repo][EXAMPLES_URL]).
Additional Resources
- GroupDocs.Merger Documentation
- [API Reference for Python][API_REF_URL]
- [Sample Projects on GitHub][EXAMPLES_URL]
- [GroupDocs Merger Forum][FORUM_URL]