Преобразование набора разрозненных изображений в один, поисковый PDF часто требуется для инструментов отчетности, генераторов счетов и архивных систем. Aspose.PDF for Python via .NET — мощный SDK, который делает это преобразование быстрым и надёжным в Python‑приложениях. Это руководство проведёт вас через установку SDK, загрузку изображений с помощью Python Imaging Library, построение PDF постранично, настройку параметров сжатия и, наконец, сохранение результата, всё с понятными примерами кода.

Перед началом: Предварительные требования и установка

Чтобы следовать этому руководству, вам понадобится:

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

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

pip install aspose-pdf pillow

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

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

Создание 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!

Часто задаваемые вопросы

  • Как я могу создать 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, как показано в разделе Configuration / Options.

Читать дальше