Работа с сгенерированной совместимостью 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.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 |
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 | Возвращает словарное представление результата проверки |