Работа с сгенерированной совместимостью API

Работа с сгенерированной совместимостью 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’s 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
UnsignedContent.add_form_field / remove_form_fieldДобавляет или удаляет поле формы из пакета unsigned-content
UnsignedContent.add_annotation / remove_annotationДобавляет или удаляет аннотацию из пакета unsigned-content
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Возвращает словарное представление результата проверки

См. также:

 Русский