Wprowadzenie
Konsolidacja rozliczeń to proces, który łączy wiele dokumentów finansowych w jeden plik PDF przy użyciu GroupDocs.Merger dla Pythona. Zespoły finansowe często muszą wysłać fakturę wraz z listami przewozowymi, raportami serwisowymi i warunkami gwarancji, ale ręczne łączenie plików powoduje błędy i marnuje czas. GroupDocs.Merger automatyzuje ten proces, zapewniając prawidłową kolejność załączników, opcjonalne zabezpieczenie i dostarczenie jednego, czystego pliku PDF.
W tym samouczku zobaczysz, jak:
- Połączyć zwykłą fakturę PDF z dowolną liczbą plików pomocniczych.
- Obsłużyć mieszane formaty, takie jak obrazy JPG i kontrakty DOCX.
- Otworzyć fakturę zabezpieczoną hasłem, dodać załączniki i ponownie zastosować szyfrowanie.
- Dołączyć tylko wybrane strony z dużych załączników, aby utrzymać finalny pakiet w kompaktowej formie.
Sam napotkałem taką sytuację w zeszłym kwartale, gdy nasz system księgowy wygenerował fakturę zabezpieczoną hasłem, a zespół prawny dodał wielostronicowy dokument DOCX z warunkami gwarancji. Poniższy kod rozwiązał problem w mniej niż pięć minut.
Kiedy ma sens łączenie faktury zabezpieczonej hasłem z innymi dokumentami?
Wiele przedsiębiorstw szyfruje faktury w spoczynku, aby spełnić wymogi zgodności. Gdy faktura musi zostać wysłana do klienta wraz z niezaszyfrowanymi załącznikami (paragony, warunki, obrazy), oryginalne hasło musi zostać usunięte w celu połączenia, a następnie ponownie zastosowane do finalnego pakietu. GroupDocs.Merger pozwala podać hasło odblokowujące za pomocą LoadOptions, dołączyć dodatkowe pliki i ostatecznie zabezpieczyć połączony PDF przy użyciu AddPasswordOptions. Dzięki temu poufność pozostaje nienaruszona, a odbiorca otrzymuje jeden, łatwy do otwarcia dokument.
Wymagania wstępne
- Python 3.8+ (przez most .NET)
- GroupDocs.Merger dla Pythona – instalacja:
pip install groupdocs-merger
- Plik PDF faktury (
invoice.pdf) oraz lista ścieżek do plików załączników. - (Opcjonalnie) Hasła do faktury źródłowej i wyjściowego PDF.
Krok 1: Podstawowa konsolidacja załączników PDF
Najprostszy przypadek to połączenie faktury PDF z innymi plikami PDF, obrazami lub dokumentami Word. API automatycznie konwertuje wejścia nie‑PDF na PDF przed połączeniem.
import groupdocs_merger as gm
# Ścieżki do plików źródłowych
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) # Normalizuje każdy plik do PDF i dołącza go
merger.save(output)
Kluczowe punkty:
gm.Mergerjest tworzony z dokumentem głównym (fakturą).join()przyjmuje dowolny obsługiwany format; biblioteka zajmuje się konwersją.save()zapisuje połączony PDF w podanej ścieżce.
Krok 2: Konsolidacja załączników o mieszanych formatach
W rzeczywistych pakietach rozliczeniowych często znajdują się zeskanowane obrazy (JPG) i umowy prawne (DOCX). Ten sam kod działa, ponieważ GroupDocs.Merger normalizuje każdy załącznik do PDF w locie.
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 i DOCX są automatycznie konwertowane do PDF
merger.save(output)
Dlaczego to ważne: Konwersja wszystkiego do PDF eliminuje potrzebę używania wielu przeglądarek, zapewniając płynne doświadczenie odbiorcy.
Krok 3: Obsługa faktur zabezpieczonych hasłem
Jeśli faktura jest zaszyfrowana, podaj hasło za pomocą LoadOptions. Po połączeniu możesz ponownie zastosować hasło do finalnego PDF przy użyciu AddPasswordOptions.
import io
invoice_password = "Inv$2026"
output_password = "Bill$2026"
load_options = gm.domain.options.LoadOptions(invoice_password)
buffer = io.BytesIO()
# Otwórz zabezpieczoną fakturę, dołącz załączniki, zapisz do bufora pamięci
with gm.Merger(invoice, load_options) as merger:
for path in attachments:
merger.join(path)
merger.save(buffer)
# Ponownie zabezpiecz połączony dokument
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)
Kluczowe punkty:
LoadOptionsodblokowuje źródłowy PDF.- Wynik połączenia jest najpierw zapisywany do strumienia w pamięci (
BytesIO). AddPasswordOptionsnakłada nowe hasło na finalny plik.
Krok 4: Wybór konkretnych stron z załączników
Czasami potrzebny jest tylko fragment załącznika (np. pierwsze dwie strony obszernego raportu serwisowego). Użyj PageJoinOptions, aby określić inkluzywny zakres 1‑based.
page_picks = [
("service_report.pdf", 1, 2), # Dołącz tylko strony 1‑2
("terms_and_conditions.pdf", 3, 3) # Dołącz tylko stronę 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)
Rezultat: Finalny PDF zawiera fakturę oraz wyłącznie wybrane strony, co utrzymuje pakiet w lekkiej formie.
Najlepsze praktyki i wskazówki
- Wydajność: Przy dużych partiach włączaj tylko niezbędne opcje (np. unikaj niepotrzebnej konwersji formatów).
- Zarządzanie pamięcią: Zawsze używaj instrukcji
with, aby zapewnić szybkie zwolnienie zasobów przez Merger. - Bezpieczeństwo: Ponownie szyfruj po połączeniu, aby zachować poufność oryginalnej faktury.
- Limity plików: GroupDocs.Merger obsługuje pliki PDF do 2 GB; większe pliki mogą wymagać podzielenia przed połączeniem.
Zakończenie
GroupDocs.Merger dla Pythona oferuje prosty interfejs API, który zamienia rozproszone zestawy dokumentów rozliczeniowych w jeden, profesjonalny pakiet PDF. Niezależnie od tego, czy pracujesz z czystymi PDF‑ami, mieszanymi mediami, fakturami zabezpieczonymi hasłem, czy musisz przyciąć za