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_validWskazówki i najlepsze praktyki
- Importuj każdą klasę
generatedprzez pełną ścieżkę podmodułu (from aspose_pdf.generated.document import Document, oraz analogicznie dlagenerated.formsigenerated.pdfa) — nigdy nie zakładaj, że import samegoDocumentlubUnsignedContentrozwią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/PdfAValidationResultjako samodzielną parę: zbuduj opcje, uruchom własną logikę walidacji i samodzielnie zapisz wyniki przy użyciuadd_error()— nie są one automatycznie wypełniane przezDocument.validate_pdfa(). - Sprawdź
UnsignedContentAbsorber.has_extracted()przed wywołaniemget_extracted(), jeśli nie masz pewności, żeextract()już się wykonało. - Preferuj główny
aspose_pdf.DocumentAPI dla nowego kodu, chyba że konkretnie potrzebujesz zredukowanego, generowanego interfejsu kompatybilności.
Typowe problemy
| Problem | Przyczyna | Naprawa |
|---|---|---|
Błędne dostępne metody Document (brak pages, form, xmp_metadata i podobnych) | Zaimportowano generated.document.Document zamiast głównego aspose_pdf.Document | Importuj 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.pdfa | Użyj klas PdfAValidateOptions/PdfAValidationResult eksportowanych z aspose_pdf dla przepływów PdfAValidator |
get_extracted() zwraca None | extract() nigdy nie został wywołany na tej instancji UnsignedContentAbsorber | Wywoł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łniania | Wygenerowana powierzchnia wymienia statyczne typowanie na mniejszy, prostszy API | Rzutuj 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 / Metoda | Opis |
|---|---|
Document.load_from | Ładuje dokument z ścieżki pliku, bajtów lub strumienia |
Document.save | Zapisuje dokument w miejscu docelowym |
Document.optimize | Wykonuje ogólną optymalizację, opcjonalnie kompresując obrazy |
Document.optimize_resources | Optymalizuje współdzielone zasoby, takie jak czcionki i obrazy |
Document.encrypt | Szyfruje dokument przy użyciu jednego hasła |
Document.change_passwords | Zmienia hasło dokumentu |
Document.validate | Zwraca informację, czy dokument jest strukturalnie poprawny |
Document.dispose | Zwalnia zasoby powiązane z dokumentem |
UnsignedContent.add_page / remove_page | Dodaje lub usuwa stronę z pakietu unsigned-content |
UnsignedContent.add_form_field / remove_form_field | Dodaje lub usuwa pole formularza z pakietu unsigned-content |
UnsignedContent.add_annotation / remove_annotation | Dodaje lub usuwa adnotację z pakietu unsigned-content |
UnsignedContentAbsorber.extract | Ekstrahuje niepodpisane treści do instancji UnsignedContent |
UnsignedContentAbsorber.get_extracted | Zwraca ostatnio wyodrębniony UnsignedContent, jeśli istnieje |
UnsignedContentAbsorber.has_extracted | Zgłasza, czy przeprowadzono ekstrakcję |
PdfAValidateOptions.add_input | Rejestruje źródło wejściowe do walidacji |
PdfAValidateOptions.set_option / get_options | Ustawia lub odczytuje wartości opcji walidacji |
PdfAValidationResult.add_error | Dodaje komunikat o błędzie i oznacza wynik jako nieprawidłowy |
PdfAValidationResult.to_dict | Zwraca słownikową reprezentację wyniku walidacji |