Робота з Generated Compatibility API

Робота з Generated Compatibility API

Робота з згенерованою сумісністю API

Aspose.PDF FOSS для Python постачається з другим, меншим API поверхнем під підпакетом aspose_pdf.generated: generated.document.Document, generated.forms.UnsignedContent і UnsignedContentAbsorber, а також generated.pdfa.PdfAValidateOptions і PdfAValidationResult. Кожен із цих класів має таку ж назву, як клас у первинному API бібліотеки (aspose_pdf.Document, aspose_pdf.UnsignedContent тощо), але це окремі, незалежно визначені класи зі скороченим набором методів. Вони існують як автономний шар сумісності — завжди імпортуйте їх за повним шляхом aspose_pdf.generated.*, щоб знати, який саме ви викликаєте.


Життєвий цикл документа через згенерований Document

generated.document.Document підтримує базовий життєвий цикл документа: завантаження, збереження, базову оптимізацію, шифрування та валідацію. Більшість його властивостей типізовані як Any, а не більш розширені типи, які надає первинний клас 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()

Шифрування та зміна пароля використовують форму з одним паролем, а не окремі паролі користувача/власника у первинному 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")

Видобування непідписаного вмісту

generated.forms.UnsignedContentAbsorber видобуває сторінки, поля форм і анотації документа, які ще не підписані, у контейнер UnsignedContent. Викличте extract(), щоб виконати видобування, потім get_extracted() або has_extracted(), щоб перевірити результат без повторного запуску.

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 також можна створювати та заповнювати безпосередньо, незалежно від абсорбера:

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 та результати

generated.pdfa.PdfAValidateOptions та PdfAValidationResult — це автономна пара опцій/результат для валідаційних процесів у стилі PDF/A. Вони не є класами, які повертає API у своїй Document.validate_pdfa() або які споживає PdfAValidator.process() — останні використовують власні, окремо визначені класи PdfAValidateOptions та PdfAValidationResult з більш багатим інтерфейсом (level, warnings, is_heuristic та 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

Поради та найкращі практики

  • Імпортуйте кожен клас generated через повний шлях підмодуля (from aspose_pdf.generated.document import Document, і аналогічно для generated.forms та generated.pdfa) — ніколи не припускайте, що простий імпорт Document або UnsignedContent розв’язується до сумісної версії.
  • Присвойте імпортованому класу відмінну локальну назву, коли файл також використовує основний API у тому самому модулі, щоб два інтерфейси залишалися чітко розділеними у кожному місці виклику.
  • Розглядайте generated.pdfa.PdfAValidateOptions/PdfAValidationResult як автономну пару: створюйте опції, виконуйте власну логіку валідації та самостійно фіксуйте результати за допомогою add_error() — вони не заповнюються автоматично Document.validate_pdfa().
  • Перевірте UnsignedContentAbsorber.has_extracted() перед викликом get_extracted(), якщо ви не впевнені, що extract() вже виконано.
  • Використовуйте первинний aspose_pdf.Document API для нового коду, якщо тільки вам не потрібна скорочена, згенерована сумісна поверхня.

Типові проблеми

ПроблемаПричинаВиправлення
Неправильні доступні методи Document (відсутні pages, form, xmp_metadata та подібні)Імпортовано generated.document.Document замість основного aspose_pdf.DocumentІмпортуйте основний клас (import aspose_pdf; aspose_pdf.Document()), якщо ви не маєте на увазі зменшену поверхню
PdfAValidateOptions/PdfAValidationResult з generated.pdfa не працюють з PdfAValidator.process()Основний API PdfAValidator очікує свої власні класи PdfAValidateOptions/PdfAValidationResult, а не версії generated.pdfaВикористовуйте класи PdfAValidateOptions/PdfAValidationResult, експортовані з aspose_pdf, для PdfAValidator робочих процесів
get_extracted() повертає Noneextract() ніколи не викликалось на цьому екземплярі UnsignedContentAbsorberВикличте extract() перед get_extracted(), або спочатку перевірте has_extracted()
Властивості у generated.document.Document мають тип Any і не забезпечують автодоповненняЗгенерований інтерфейс обмінює статичну типізацію на менший, простіший APIПриведіть тип або задокументуйте очікуваний тип у місці виклику, або перейдіть до основного класу Document для більш розширеної типізації

FAQ

Чи є aspose_pdf.generated заглушкою або заповнювачем?

Ні. Це реальний, імпортований підпакет з працюючими класами — Document, UnsignedContent, UnsignedContentAbsorber, PdfAValidateOptions і PdfAValidationResult — це просто менша, автономна поверхня порівняно з первинним API бібліотеки.

Чому generated.document.Document має таку ж назву, як у aspose_pdf.Document?

Вони — два незалежно визначені класи, які випадково мають однакову назву. Імпорт з aspose_pdf.generated.document надає вам сумісну версію; імпорт aspose_pdf.Document (або from aspose_pdf import Document) надає вам первинну версію.

Чи можу я передати generated.pdfa.PdfAValidateOptions у PdfAValidator.process()?

Ні. PdfAValidator.process() є частиною первинного API і очікує власний клас PdfAValidateOptions первинного API, який має інший підпис методу (add_input(source) замість безаргументного add_input()).

Чи UnsignedContentAbsorber.extract() потребує аргумент Document?

Ні. extract() не приймає аргументів у згенерованій сумісній поверхні; створіть абсорбер і викличте extract() безпосередньо.


Підсумок API Reference

Клас / МетодОпис
Document.load_fromЗавантажує документ з шляху до файлу, байтів або потоку
Document.saveЗберігає документ у призначення
Document.optimizeВиконує загальну оптимізацію, за потреби стискаючи зображення
Document.optimize_resourcesОптимізує спільні ресурси, такі як шрифти та зображення
Document.encryptШифрує документ одним паролем
Document.change_passwordsЗмінює пароль документа
Document.validateПовертає, чи документ є структурно коректним
Document.disposeЗвільняє ресурси, пов’язані з документом
UnsignedContent.add_page / remove_pageДодає або видаляє сторінку з unsigned-content bundle
UnsignedContent.add_form_field / remove_form_fieldДодає або видаляє поле форми з unsigned-content bundle
UnsignedContent.add_annotation / remove_annotationДодає або видаляє анотацію з unsigned-content bundle
UnsignedContentAbsorber.extractВитягає unsigned content у UnsignedContent екземпляр
UnsignedContentAbsorber.get_extractedПовертає останній витягнутий UnsignedContent, якщо такий є
UnsignedContentAbsorber.has_extractedПовідомляє, чи було виконано витягування
PdfAValidateOptions.add_inputРеєструє джерело вводу для перевірки
PdfAValidateOptions.set_option / get_optionsВстановлює або читає значення параметрів валідації
PdfAValidationResult.add_errorДодає повідомлення про помилку і позначає результат як недійсний
PdfAValidationResult.to_dictПовертає словникове представлення результату валідації

Дивіться також

 Українська