Перетворення колекції розкиданих зображень у один, придатний до пошуку PDF є поширеною вимогою для інструментів звітності, генераторів рахунків та архівних систем. Aspose.PDF for Python via .NET — це потужний SDK, який робить це перетворення швидким і надійним у Python‑застосунках. У цьому посібнику крок за кроком розглядається встановлення SDK, завантаження зображень за допомогою Python Imaging Library, створення PDF‑файлу сторінка за сторінкою, налаштування параметрів стиснення та, нарешті, збереження результату — усе це з наочними прикладами коду.

Перш ніж почати: Попередні вимоги та встановлення

Щоб слідувати цьому підручнику, вам потрібно:

  • Python 3.8 або новіший, встановлений на вашій машині розробки.
  • IDE або редактор на ваш вибір (VS Code, PyCharm тощо).
  • Доступ до інтернету для завантаження пакету SDK.

Встановіть SDK Aspose.PDF та бібліотеку Pillow (де‑факто Python Imaging Library) за допомогою pip:

pip install aspose-pdf pillow

Ви також можете завантажити SDK вручну зі сторінки офіційного випуску: Aspose.PDF for Python via .NET Завантажити. Після встановлення імпортуйте необхідні простори імен у ваш скрипт.

Тепер, коли середовище готове, давайте зануримось у реалізацію.

Створення PDF з зображень у Python: покроковий посібник

Крок 1: Завантажте вихідні зображення

Спочатку використайте Pillow, щоб відкрити кожен файл зображення і зберегти їх у список. Це підготовлює дані зображень для PDF‑будівника.

from PIL import Image
import os

image_folder = "input_images"
image_paths = [os.path.join(image_folder, f) for f in os.listdir(image_folder)
               if f.lower().endswith(('.png', '.jpg', '.jpeg', '.bmp', '.gif'))]

images = [Image.open(p) for p in image_paths]

Крок 2: Створити новий PDF‑документ

Створіть об’єкт Document Aspose.PDF, який буде містити сторінки.

import aspose.pdf as ap

pdf_doc = ap.Document()

Для отримання докладнішої інформації про клас Document, перегляньте довідку API.

Крок 3: Додайте кожне зображення як окрему сторінку

Пройдіть по завантаженим зображенням, створіть сторінку та вставте зображення. SDK автоматично масштабує зображення, щоб воно відповідало розміру сторінки.

for img in images:
    page = pdf_doc.pages.add()
    # Convert Pillow image to a byte stream compatible with Aspose.PDF
    with io.BytesIO() as img_stream:
        img.save(img_stream, format='PNG')
        img_stream.seek(0)
        page.resources.images.add(ap.Image(img_stream))
        # Fit the image to the page dimensions
        page.page_info.width = img.width
        page.page_info.height = img.height

Крок 4: Налаштування параметрів стиснення

Налаштуйте рівень стиснення зображень, щоб зменшити кінцевий розмір PDF без шкоди якості.

# Set JPEG compression for all images (if using JPEG format)
for img_res in pdf_doc.resources.images:
    img_res.compression = ap.ImageCompression.JPEG
    img_res.jpeg_quality = 80  # Quality range: 0‑100

Крок 5: Зберегти PDF файл

Нарешті запишіть зібраний документ на диск.

output_path = "output/result.pdf"
pdf_doc.save(output_path)
print(f"PDF generated successfully at {output_path}")

З цими кроками у вас є повністю функціональний робочий процес для генерації PDF з зображень у Python.

Створення PDF з колекції зображень у Python — повний приклад коду

Наступний скрипт збирає всі частини разом у єдину, виконувану програму.

import os
import io
from PIL import Image
import aspose.pdf as ap

# -------------------- Configuration --------------------
image_folder = "input_images"          # Folder containing source images
output_pdf = "output/result.pdf"       # Destination PDF file
jpeg_quality = 80                      # Compression quality (0‑100)

# -------------------- Load Images --------------------
image_paths = [os.path.join(image_folder, f) for f in os.listdir(image_folder)
               if f.lower().endswith(('.png', '.jpg', '.jpeg', '.bmp', '.gif'))]

images = [Image.open(p) for p in image_paths]

# -------------------- Create PDF Document --------------------
pdf_doc = ap.Document()

for img in images:
    page = pdf_doc.pages.add()
    with io.BytesIO() as img_stream:
        img.save(img_stream, format='PNG')
        img_stream.seek(0)
        pdf_image = page.resources.images.add(ap.Image(img_stream))
        page.page_info.width = img.width
        page.page_info.height = img.height
        # Apply compression if the original is JPEG
        if img.format == 'JPEG':
            pdf_image.compression = ap.ImageCompression.JPEG
            pdf_image.jpeg_quality = jpeg_quality

# -------------------- Save PDF --------------------
pdf_doc.save(output_pdf)
print(f"PDF generated successfully at {output_pdf}")

Примітка: Цей приклад коду демонструє основну функціональність. Перш ніж використовувати його у вашому проєкті, переконайтеся, що оновили шляхи до файлів (input_images, output/result.pdf), перевірте, що всі необхідні залежності встановлені належним чином, і ретельно протестуйте у вашому середовищі розробки. Якщо ви зіткнетеся з будь-якими проблемами, будь ласка, зверніться до офіційної документації або зв’яжіться з командою підтримки для отримання допомоги.

Розширені налаштування генерації PDF: параметри та конфігурація

Поза базовим робочим процесом, Aspose.PDF пропонує кілька властивостей для тонкого налаштування виводу.

Рівень стиснення зображення

Керуйте компромісом між якістю та розміром файлу.

pdf_image.compression = ap.ImageCompression.JPEG
pdf_image.jpeg_quality = 70   # Lower value = smaller file, lower quality

Розмір сторінки та поля

Встановіть власний розмір сторінки, якщо вам потрібен уніфікований макет.

page.page_info.width = 595   # A4 width in points
page.page_info.height = 842  # A4 height in points
page.page_info.margin = ap.MarginInfo(10, 10, 10, 10)

Роздільна здатність (DPI)

Вищий DPI забезпечує різкіші зображення за рахунок більших PDF-файлів.

pdf_doc.page_info.dpi = 300

Для повного списку налаштовуваних властивостей зверніться до довідка API.

Висновок

Тепер у вас є повне програмне рішення для генерації PDF з зображень у Python за допомогою Aspose.PDF for Python via .NET. SDK виконує завантаження зображень, створення сторінок, стискання та збереження всього кількома рядками коду, дозволяючи вам зосередитися на бізнес‑логіці, а не на низькорівневій роботі з PDF. Коли ви переходите до продакшну, пам’ятайте про придбання належної ліцензії; деталі доступні на сторінці цін і ви можете розпочати з тимчасової ліцензії для оцінки. Щасливого кодування та насолоджуйтеся простотою перетворення колекцій зображень у відшліфовані PDF!

FAQs

  • Як можна створити PDF з зображень у Python за допомогою Aspose.PDF?
    Використовуйте SDK Aspose.PDF для створення Document, додайте сторінку для кожного зображення, завантаженого за допомогою Pillow, за потреби встановіть стиснення та викличте save(), щоб записати PDF. Повний приклад наведено вище.

  • Які формати зображень підтримуються для створення PDF?
    SDK приймає PNG, JPG, JPEG, BMP, GIF, та TIFF безпосередньо. Pillow також може конвертувати непідтримувані формати в один із цих перед додаванням їх у PDF.

  • Чи потрібна мені ліцензія для комерційного використання?
    Так. Отримайте тимчасову оцінювальну ліцензію зі сторінки тимчасової ліцензії і придбайте повну ліцензію через сторінку цін для виробничих розгортань.

  • Чи можу я налаштувати розмір сторінки PDF та роздільну здатність?
    Звичайно. Використовуйте page.page_info.width, page.page_info.height та pdf_doc.page_info.dpi для керування розмірами та DPI, як показано у розділі Конфігурація / Параметри.

Read More