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_tag | PDF/UA проверка доступности и автоматическое тегирование структуры |
Page.add_text | Добавить позиционированный текст на страницу |
Page.render | Отобразить страницу в RasterizedPage |
PdfExtractor | Извлечь текст страницы и встроенные вложения |
PdfFileEditor | Объединять, разбивать, вставлять и удалять страницы между файлами |
Form / Field | Контейнер AcroForm и отдельные поля формы |
PdfSignature / SigningUtils | Проверка и создание цифровой подписи |
AsposePdfException | Базовый класс для каждого исключения, специфичного для пакета |