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 | Базовий клас для кожного виключення, специфічного для пакету |