Praca z wygenerowaną kompatybilnością API

Praca z wygenerowaną kompatybilnością API

Praca z wygenerowaną kompatybilnością API

Aspose.PDF FOSS dla Python dostarcza drugą, mniejszą powierzchnię API w podpakiecie aspose_pdf.generated: generated.document.Document, generated.forms.UnsignedContent i UnsignedContentAbsorber, oraz generated.pdfa.PdfAValidateOptions i PdfAValidationResult. Każda z tych klas ma taką samą nazwę jak klasa w głównym API biblioteki (aspose_pdf.Document, aspose_pdf.UnsignedContent i tak dalej), ale są to oddzielne, niezależnie zdefiniowane klasy o ograniczonym zestawie metod. Istnieją jako samodzielna warstwa kompatybilności — zawsze importuj je przy użyciu pełnej ścieżki aspose_pdf.generated.*, aby wiedzieć, którą wywołujesz.


Cykl życia dokumentu za pośrednictwem wygenerowanego Document

generated.document.Document obsługuje podstawowy cykl życia dokumentu: ładowanie, zapisywanie, podstawową optymalizację, szyfrowanie i walidację. Większość jego właściwości jest typowana jako Any, a nie jako bogatsze typy udostępniane w głównej klasie Document.

from aspose_pdf.generated.document import Document

doc = Document()
doc.load_from("input.pdf")

doc.optimize(compress_images=True)
doc.optimize_resources(remove_unused=True)

if doc.validate():
    doc.save("output.pdf")

doc.dispose()

Szyfrowanie i zmiany hasła używają formularza jednego hasła, zamiast oddzielnych haseł użytkownika/właściciela w głównym Document.encrypt:

from aspose_pdf.generated.document import Document

doc = Document()
doc.load_from("input.pdf")

doc.encrypt("secret")
doc.change_passwords("secret", "new-secret")
doc.save("protected.pdf")

Wyodrębnianie niepodpisanej treści

generated.forms.UnsignedContentAbsorber wyodrębnia strony, pola formularzy i adnotacje dokumentu, które nie zostały jeszcze podpisane, do kontenera UnsignedContent. Wywołaj extract(), aby uruchomić wyodrębnianie, a następnie get_extracted() lub has_extracted(), aby sprawdzić wynik bez ponownego uruchamiania.

from aspose_pdf.generated.document import Document
from aspose_pdf.generated.forms import UnsignedContentAbsorber

doc = Document()
doc.load_from("input.pdf")

absorber = UnsignedContentAbsorber()
extracted = absorber.extract()

print(len(extracted.pages), len(extracted.form_fields), extracted.annotations)

if absorber.has_extracted():
    same_result = absorber.get_extracted()

absorber.reset()

UnsignedContent może być także budowany i wypełniany bezpośrednio, niezależnie od absorbentu:

from aspose_pdf.generated.forms import UnsignedContent

bundle = UnsignedContent()
bundle.add_page(some_page)
bundle.add_form_field(some_field)
bundle.add_annotation(some_annotation)

bundle.remove_page(some_page)
bundle.reset()

PDF/A opcje walidacji i wyniki

generated.pdfa.PdfAValidateOptions i PdfAValidationResult są samodzielną parą opcji/rezultatu dla przepływów walidacji w stylu PDF/A. Nie są to klasy zwracane przez główny API’s Document.validate_pdfa() ani konsumowane przez PdfAValidator.process() — te używają własnych, osobno zdefiniowanych klas PdfAValidateOptions i PdfAValidationResult o bogatszym interfejsie (level, warnings, is_heuristic oraz font_lookup_directory).

from aspose_pdf.generated.pdfa import PdfAValidateOptions, PdfAValidationResult

options = PdfAValidateOptions()
options.add_input()
options.set_option("level", "1b")

stored_options = options.get_options()

result = PdfAValidationResult()
result.add_error("Font not embedded: Arial")

summary = result.to_dict()
is_valid = result.is_valid

Wskazówki i najlepsze praktyki

  • Importuj każdą klasę generated przez pełną ścieżkę podmodułu (from aspose_pdf.generated.document import Document, oraz analogicznie dla generated.forms i generated.pdfa) — nigdy nie zakładaj, że import samego Document lub UnsignedContent rozwiązuje się do wersji kompatybilnej.
  • Nadaj importowanej klasie wyróżniającą nazwę lokalną za każdym razem, gdy plik używa także głównego API w tym samym module, aby dwie powierzchnie pozostały widocznie oddzielone w każdym miejscu wywołania.
  • Traktuj generated.pdfa.PdfAValidateOptions/PdfAValidationResult jako samodzielną parę: zbuduj opcje, uruchom własną logikę walidacji i samodzielnie zapisz wyniki przy użyciu add_error() — nie są one automatycznie wypełniane przez Document.validate_pdfa().
  • Sprawdź UnsignedContentAbsorber.has_extracted() przed wywołaniem get_extracted(), jeśli nie masz pewności, że extract() już się wykonało.
  • Preferuj główny aspose_pdf.Document API dla nowego kodu, chyba że konkretnie potrzebujesz zredukowanego, generowanego interfejsu kompatybilności.

Typowe problemy

ProblemPrzyczynaNaprawa
Błędne dostępne metody Document (brak pages, form, xmp_metadata i podobnych)Zaimportowano generated.document.Document zamiast głównego aspose_pdf.DocumentImportuj główną klasę (import aspose_pdf; aspose_pdf.Document()), chyba że zamierzasz użyć zredukowanego interfejsu
PdfAValidateOptions/PdfAValidationResult z generated.pdfa nie działają z PdfAValidator.process()Główny API PdfAValidator oczekuje własnych klas PdfAValidateOptions/PdfAValidationResult, a nie wersji generated.pdfaUżyj klas PdfAValidateOptions/PdfAValidationResult eksportowanych z aspose_pdf dla przepływów PdfAValidator
get_extracted() zwraca Noneextract() nigdy nie został wywołany na tej instancji UnsignedContentAbsorberWywołaj extract() przed get_extracted(), albo najpierw sprawdź has_extracted()
Właściwości w generated.document.Document są typowane jako Any i nie oferują autouzupełnianiaWygenerowana powierzchnia wymienia statyczne typowanie na mniejszy, prostszy APIRzutuj lub udokumentuj oczekiwany typ w miejscu wywołania, albo przejdź na główną klasę Document dla bogatszego typowania

FAQ

Czy aspose_pdf.generated jest szkieletem lub placeholderem?

Nie. To prawdziwy, importowalny podpakiet z działającymi klasami — Document, UnsignedContent, UnsignedContentAbsorber, PdfAValidateOptions i PdfAValidationResult — jest po prostu mniejszym, samodzielnym interfejsem niż główny API biblioteki.

Dlaczego generated.document.Document ma taką samą nazwę jak aspose_pdf.Document?

To dwie niezależnie zdefiniowane klasy, które przypadkowo mają tę samą nazwę. Importowanie z aspose_pdf.generated.document zapewnia wersję kompatybilności; importowanie aspose_pdf.Document (lub from aspose_pdf import Document) daje wersję główną.

Czy mogę przekazać generated.pdfa.PdfAValidateOptions do PdfAValidator.process()?

Nie. PdfAValidator.process() jest częścią głównego API i oczekuje własnej klasy PdfAValidateOptions głównego API, która ma inny podpis metody (add_input(source) zamiast metody bezargumentowej add_input()).

Czy UnsignedContentAbsorber.extract() potrzebuje argumentu Document?

Nie. extract() nie przyjmuje żadnych argumentów w wygenerowanej powierzchni zgodności; skonstruuj absorber i wywołaj extract() bezpośrednio.


API Reference Podsumowanie

Klasa / MetodaOpis
Document.load_fromŁaduje dokument z ścieżki pliku, bajtów lub strumienia
Document.saveZapisuje dokument w miejscu docelowym
Document.optimizeWykonuje ogólną optymalizację, opcjonalnie kompresując obrazy
Document.optimize_resourcesOptymalizuje współdzielone zasoby, takie jak czcionki i obrazy
Document.encryptSzyfruje dokument przy użyciu jednego hasła
Document.change_passwordsZmienia hasło dokumentu
Document.validateZwraca informację, czy dokument jest strukturalnie poprawny
Document.disposeZwalnia zasoby powiązane z dokumentem
UnsignedContent.add_page / remove_pageDodaje lub usuwa stronę z pakietu unsigned-content
UnsignedContent.add_form_field / remove_form_fieldDodaje lub usuwa pole formularza z pakietu unsigned-content
UnsignedContent.add_annotation / remove_annotationDodaje lub usuwa adnotację z pakietu unsigned-content
UnsignedContentAbsorber.extractEkstrahuje niepodpisane treści do instancji UnsignedContent
UnsignedContentAbsorber.get_extractedZwraca ostatnio wyodrębniony UnsignedContent, jeśli istnieje
UnsignedContentAbsorber.has_extractedZgłasza, czy przeprowadzono ekstrakcję
PdfAValidateOptions.add_inputRejestruje źródło wejściowe do walidacji
PdfAValidateOptions.set_option / get_optionsUstawia lub odczytuje wartości opcji walidacji
PdfAValidationResult.add_errorDodaje komunikat o błędzie i oznacza wynik jako nieprawidłowy
PdfAValidationResult.to_dictZwraca słownikową reprezentację wyniku walidacji

Zobacz także

 Polski