Преобразование набора разрозненных изображений в один, поисковый 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.
