Робота з 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.DocumentAPI для нового коду, якщо тільки вам не потрібна скорочена, згенерована сумісна поверхня.
Типові проблеми
| Проблема | Причина | Виправлення |
|---|---|---|
Неправильні доступні методи 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() повертає None | extract() ніколи не викликалось на цьому екземплярі 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 | Повертає словникове представлення результату валідації |