Introductie
Factuurconsolidatie is een workflow die meerdere financiële documenten combineert tot één PDF met behulp van GroupDocs.Merger voor Python. Financieteams moeten vaak een factuur samen met leveringsbonnen, service‑rapporten en garantievoorwaarden versturen, maar handmatig bestanden aan elkaar plakken leidt tot fouten en verspilt tijd. GroupDocs.Merger automatiseert dit proces, zorgt ervoor dat elke bijlage correct wordt geordend, eventueel beveiligd, en geleverd wordt als één nette PDF.
In deze tutorial zie je hoe je:
- Een gewone PDF‑factuur kunt samenvoegen met een willekeurig aantal ondersteunende bestanden.
- Gemengde formaten zoals JPG‑afbeeldingen en DOCX‑contracten kunt verwerken.
- Een wachtwoord‑beveiligde factuur kunt openen, bijlagen kunt toevoegen en de encryptie opnieuw kunt toepassen.
- Alleen geselecteerde pagina’s uit grote bijlagen kunt opnemen om het uiteindelijke pakket compact te houden.
Ik kwam dit exacte scenario tegen in het vorige kwartaal toen ons boekhoudsysteem een wachtwoord‑beveiligde factuur genereerde en het juridische team een meer‑pagina‑garantie‑DOCX toevoegde. De onderstaande code loste het op in minder dan vijf minuten.
Wanneer is het zinvol om een wachtwoord‑beveiligde factuur met andere documenten te combineren?
Veel ondernemingen versleutelen facturen in rust om te voldoen aan compliance‑eisen. Wanneer de factuur naar een klant moet worden gestuurd samen met onbeveiligde bijlagen (bonnen, voorwaarden, afbeeldingen), moet het oorspronkelijke wachtwoord worden verwijderd voor het samenvoegen en vervolgens opnieuw worden toegepast op het uiteindelijke pakket. GroupDocs.Merger laat je het ontgrendelingswachtwoord opgeven via LoadOptions, de extra bestanden toevoegen en tenslotte de samengevoegde PDF beveiligen met AddPasswordOptions. Zo blijft de vertrouwelijkheidspositie behouden terwijl er één gemakkelijk te openen document wordt geleverd.
Vereisten
- Python 3.8+ (via .NET‑bridge)
- GroupDocs.Merger voor Python – installeren met:
pip install groupdocs-merger
- Een hoofd‑factuur‑PDF (
invoice.pdf) en een lijst met pad‑namen van bijlagen. - (Optioneel) Wachtwoorden voor de bron‑factuur en de uitvoer‑PDF.
Stap 1: Basisconsolidatie van PDF‑bijlagen
Het eenvoudigste geval is het samenvoegen van een PDF‑factuur met andere PDF‑bestanden, afbeeldingen of Word‑bestanden. De API converteert niet‑PDF‑invoer automatisch naar PDF voordat ze worden samengevoegd.
import groupdocs_merger as gm
# Paden naar bronbestanden
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) # Normaliseert elk bestand naar PDF en voegt het toe
merger.save(output)
Belangrijke punten:
gm.Mergerwordt geïnstantieerd met het host‑document (de factuur).join()accepteert elk ondersteund formaat; de bibliotheek verzorgt de conversie.save()schrijft de samengevoegde PDF naar het opgegeven pad.
Stap 2: Consolidatie van bijlagen met gemengde formaten
In de praktijk bevatten factuurpakketten vaak gescande afbeeldingen (JPG) en juridische contracten (DOCX). Dezelfde code werkt omdat GroupDocs.Merger elke bijlage on‑the‑fly naar PDF normaliseert.
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 en DOCX worden automatisch naar PDF geconverteerd
merger.save(output)
Waarom het belangrijk is: Alles naar PDF converteren elimineert de noodzaak voor de ontvanger om meerdere viewers te gebruiken, wat een naadloze ervaring oplevert.
Stap 3: Werken met wachtwoord‑beveiligde facturen
Als de factuur versleuteld is, geef je het wachtwoord op via LoadOptions. Na het samenvoegen kun je een wachtwoord toepassen op de uiteindelijke PDF met AddPasswordOptions.
import io
invoice_password = "Inv$2026"
output_password = "Bill$2026"
load_options = gm.domain.options.LoadOptions(invoice_password)
buffer = io.BytesIO()
# Open de beveiligde factuur, voeg bijlagen toe, schrijf naar geheugenbuffer
with gm.Merger(invoice, load_options) as merger:
for path in attachments:
merger.join(path)
merger.save(buffer)
# Beveilig het samengevoegde document opnieuw
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)
Belangrijke punten:
LoadOptionsontgrendelt de bron‑PDF.- Het samengevoegde resultaat wordt eerst naar een in‑memory‑stream (
BytesIO) geschreven. AddPasswordOptionspast een nieuw wachtwoord toe op het uiteindelijke bestand.
Stap 4: Specifieke pagina’s uit bijlagen selecteren
Soms is slechts een deel van een bijlage relevant (bijv. de eerste twee pagina’s van een lang service‑rapport). Gebruik PageJoinOptions om een inclusieve 1‑gebaseerde bereik op te geven.
page_picks = [
("service_report.pdf", 1, 2), # Alleen pagina’s 1‑2 opnemen
("terms_and_conditions.pdf", 3, 3) # Alleen pagina 3 opnemen
]
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)
Resultaat: De uiteindelijke PDF bevat de factuur plus alleen de gekozen pagina’s, waardoor het pakket licht blijft.
Volledig voorbeeld
Het volledige werkende voorbeeld, inclusief alle bronbestanden en voorbeeld‑documenten, is beschikbaar op GitHub: billing-consolidator-demo-using-groupdocs-merger-python.
Best practices & tips
- Prestaties: Schakel voor grote batches alleen de opties in die je nodig hebt (bijv. vermijd onnod