Aspose.PDF FOSS for Python Функции

Aspose.PDF FOSS for Python Функции

Aspose.PDF FOSS for Python Возможности

Aspose.PDF FOSS for Python — это чистая Python библиотека для создания, открытия, изменения и сохранения PDF-документов. Эта страница охватывает основные области возможностей и классы, которые служат их точками входа. Каждая область подробно рассматривается на отдельной странице руководства разработчика.


Управление документами и страницами

Document является корневым объектом для любой операции. Создайте его без аргументов, чтобы начать новый пустой документ, или вызовите load_from(), чтобы прочитать существующий из пути, байтов или потока. document.pages предоставляет изменяемый PageCollection, а Page.add_text размещает позиционированный текст на странице.

from aspose_pdf import Document

document = Document()
page = document.pages.add()
page.add_text("Hello from Aspose.PDF FOSS!", x=72, y=720, font_size=18)
document.save("hello.pdf")

Извлечение текста и поиск

PdfExtractor привязывается к документу и извлекает текст постранично. bind_pdf() открывает источник, extract_text() выполняет извлечение, а get_text() возвращает накопленный результат.

from aspose_pdf import PdfExtractor

extractor = PdfExtractor()
extractor.bind_pdf("hello.pdf")
extractor.extract_text()
print(extractor.get_text())
extractor.close()

Для позиционного поиска и замены по фрагментам TextFragmentAbsorber предоставляет найденные объекты TextFragment с text_search_options, управляющим регистронезависимостью и сопоставлением регулярных выражений.


Отображение страниц в изображения

Document.save_page_as_image рендерит одну страницу напрямую в файл PNG или TIFF с настраиваемым DPI. Для более низкоуровневого доступа Page.render возвращает RasterizedPage с необработанными пиксельными данными через get_pixel() и pixels.

from aspose_pdf import Document

document = Document()
document.load_from("hello.pdf")
document.save_page_as_image(0, "page-1.png", dpi=150)

Формы и интерактивные поля

AcroForm поля управляются через Document.form, фасад Form. Form.add_text_field() (а также эквиваленты чекбокса, радиокнопки, списка и комбобокса) создаёт новое поле, привязанное к странице и прямоугольнику виджета, возвращая Field. Form.fields перечисляет все поля, находящиеся в документе в данный момент.

from aspose_pdf import Document

document = Document()
page = document.pages.add()
document.form.add_text_field("customer_name", page, (72, 700, 300, 720))

for field in document.form.fields:
    print(field.name, field.field_type)

document.save("form.pdf")

Безопасность, шифрование и подписи

Document.encrypt защищает документ пользовательским паролем (необходимым для его открытия) и паролем владельца (необходимым для изменения прав); decrypt() и change_passwords() управляют защитой уже открытого документа. is_encrypted сообщает текущее состояние.

from aspose_pdf import Document

document = Document()
document.load_from("hello.pdf")
document.encrypt(user_password="secret", owner_password="owner-secret")
document.save("encrypted.pdf")

Проверкой цифровой подписи занимается PdfSignature.validate, который возвращает ValidationResult, описывающий статус доверия и отзыва, а SigningUtils предоставляет вспомогательные средства для работы с сертификатами и подписью PKCS#7/CAdES.


PDF/A и PDF/UA соответствие

Document.validate_pdfa выполняет эвристическую проверку соответствия PDF/A и возвращает PdfAValidationResult; convert_to_pdfa() пытается исправить документ до этого уровня. validate_pdfua() и auto_tag() предоставляют эквивалентную проверку доступности и автоматическое тегирование структуры-дерева для PDF/UA.

from aspose_pdf import Document

document = Document()
document.load_from("hello.pdf")

result = document.validate_pdfa("1b")
if not result.is_valid:
    document.convert_to_pdfa("1b")

document.auto_tag()
document.save("compliant.pdf")

Советы и лучшие практики

  • Изменяйте объект, возвращаемый напрямую document.pages, page.annotations или document.form — изменения, сделанные в отдельной копии страницы или поля, не отражаются при вызове save().
  • PageCollection имеет нулевой индекс в этом привязке Python (document.pages[0] — первая страница).
  • Отлавливайте InvalidPasswordException и PdfParseException до более общего AsposePdfException при вызове load_from() на недоверенных данных, чтобы можно было реагировать по-разному на неправильный пароль и на повреждённый файл.
  • Вызовите document.optimize() или compress_streams() перед save() в сильно отредактированных документах, чтобы удалить неиспользуемые ресурсы и уменьшить размер файла.
  • Передайте ограниченный PdfLoadLimits в load_from() при обработке PDF из недоверенного источника, чтобы ограничить использование памяти и количество объектов во время парсинга.

Распространённые проблемы

ПроблемаПричинаИсправление
save() создает файл с неизменёнными правкамиИзменения были внесены в копию страницы, аннотации или поля, а не в объект, полученный из document.pages, annotations или formИзмените объект, возвращаемый напрямую этими коллекциями
InvalidPasswordException на load_from()Документ защищён паролем, и пароль не был предоставлен или был указан неверныйВведите правильный пароль: document.load_from(path, password="...")
validate_pdfa() всё ещё сообщает об ошибке шрифта после convert_to_pdfa()Не найден подходящий файл шрифта в предоставленном font_lookup_directoryДобавьте отсутствующий шрифт в каталог поиска или зарегистрируйте его с помощью FontRepository перед конвертацией
Отрендеренное изображение выглядит пустымПередан неверный индекс страницы в save_page_as_image() или render()pages использует нулевую индексацию — проверьте индекс и убедитесь, что PdfExtractor вообще возвращает текст для этой страницы
Поле, добавленное с помощью Form.add_text_field(), не отображается на страницеПрямоугольник виджета находится за пределами media_box страницыУбедитесь, что координаты прямоугольника находятся внутри Page.media_box

FAQ

Зависит ли Aspose.PDF FOSS для Python от коммерческого PDF-движка?

Нет. Это полностью оригинальный, чисто-Python PDF-движок, выпущенный под лицензией MIT. Его единственные зависимости во время выполнения — cryptography и asn1crypto, используемые для шифрования и проверки подписей.

Могу ли я создать PDF с нуля вместо открытия существующего?

Да. Document() без аргументов создаёт пустой документ в памяти; вызовите document.pages.add(), чтобы добавить страницы перед сохранением.

В какие растровые форматы я могу отрисовать страницу?

Page.render и Document.save_page_as_image создают растровый вывод в формате PNG или TIFF; возвращаемый RasterizedPage также предоставляет необработанные данные пикселей через get_pixel() и свойство pixels.

Какое исключение следует ловить для ошибок, специфичных для пакета?

Отловите AsposePdfException. Каждая ошибка, специфичная для пакета, — включая разбор (PdfParseException), пароль и шифрование (PdfSecurityException, InvalidPasswordException), а также ошибки проверки (PdfValidationException) — происходит из него.

Куда мне идти дальше?

Руководство «Getting Started» охватывает установку, лицензирование и первый рабочий пример. Это руководство для разработчиков продолжается темами управления документами, такими как формы, встроенные вложения файлов, обнаружение шрифтов и создание оглавлений/закладок.


API Reference Сводка

Класс/МетодОписание:
DocumentКорневой объект — создавать, загружать, сохранять и управлять PDF
Document.pagesИзменяемый PageCollection документа
Document.load_from / Document.saveЧитать из или записывать в путь, байты или поток
Document.encrypt / Document.decryptЗащитить паролем или снять защиту
Document.validate_pdfa / Document.convert_to_pdfaЭвристическая проверка соответствия PDF/A и преобразование
Document.validate_pdfua() / Document.auto_tagPDF/UA проверка доступности и автоматическое тегирование структуры
Page.add_textДобавить позиционированный текст на страницу
Page.renderОтобразить страницу в RasterizedPage
PdfExtractorИзвлечь текст страницы и встроенные вложения
PdfFileEditorОбъединять, разбивать, вставлять и удалять страницы между файлами
Form / FieldКонтейнер AcroForm и отдельные поля формы
PdfSignature / SigningUtilsПроверка и создание цифровой подписи
AsposePdfExceptionБазовый класс для каждого исключения, специфичного для пакета

См. также:

 Русский