Převod kolekce rozptýlených obrázků do jediného, prohledávatelného PDF je častý požadavek pro nástroje pro reportování, generátory faktur a archivní systémy. Aspose.PDF for Python via .NET je výkonný SDK, který umožňuje tento převod rychle a spolehlivě v Python aplikacích. Tento průvodce vás provede instalací SDK, načítáním obrázků pomocí Python Imaging Library, tvorbou PDF stránku po stránce, laděním nastavení komprese a nakonec uložením výsledku, vše s jasnými ukázkami kódu.

Než začnete: Požadavky a instalace

Pro sledování tohoto tutoriálu potřebujete:

  • Python 3.8 nebo novější nainstalovaný na vašem vývojovém počítači.
  • IDE nebo editor dle vašeho výběru (VS Code, PyCharm atd.).
  • Přístup k internetu pro stažení balíčku SDK.

Nainstalujte SDK Aspose.PDF a knihovnu Pillow (de‑facto Python Imaging Library) pomocí pip:

pip install aspose-pdf pillow

Můžete také stáhnout SDK ručně z oficiální stránky vydání: Aspose.PDF for Python via .NET Download. Po instalaci importujte požadované jmenné prostory ve svém skriptu.

Nyní, když je prostředí připravené, pojďme se ponořit do implementace.

Vytvoření PDF z obrázků v Pythonu: krok za krokem

Krok 1: Načtěte zdrojové obrázky

Nejprve použijte Pillow k otevření každého souboru obrázku a uložte je do seznamu. Tím se připraví data obrázku pro tvůrce 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]

Krok 2: Vytvořte nový PDF dokument

Vytvořte objekt Aspose.PDF Document, který bude obsahovat stránky.

import aspose.pdf as ap

pdf_doc = ap.Document()

Pro podrobnější informace o třídě Document viz referenci API.

Krok 3: Přidejte každý obrázek jako samostatnou stránku

Procházejte načtené obrázky, vytvořte stránku a vložte obrázek. SDK automaticky mění velikost obrázku tak, aby odpovídala velikosti stránky.

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

Krok 4: Nastavení možností komprese

Upravte úroveň komprese obrazu, aby se snížila konečná velikost PDF souboru, aniž byste obětovali kvalitu.

# 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

Krok 5: Uložení souboru PDF

Nakonec zapište sestavený dokument na disk.

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

S těmito kroky máte plně funkční pracovní postup pro generování PDF z obrázků v Pythonu.

Vytvoření PDF ze sbírky obrázků v Pythonu - kompletní příklad kódu

Následující skript spojí všechny části do jednoho spustitelného programu.

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}")

Poznámka: Tento příklad kódu demonstruje základní funkčnost. Před jeho použitím ve vašem projektu se ujistěte, že aktualizujete cesty k souborům (input_images, output/result.pdf), ověříte, že všechny požadované závislosti jsou řádně nainstalovány, a důkladně otestujete ve svém vývojovém prostředí. Pokud narazíte na jakékoli problémy, obraťte se na oficiální dokumentaci nebo kontaktujte tým podpory pro pomoc.

Pokročilá nastavení generování PDF: možnosti a konfigurace

Mimo základní pracovní postup nabízí Aspose.PDF několik vlastností pro jemné doladění výstupu.

Úroveň komprese obrázku

Ovládejte kompromis mezi kvalitou a velikostí souboru.

pdf_image.compression = ap.ImageCompression.JPEG
pdf_image.jpeg_quality = 70   # Nižší hodnota = menší soubor, nižší kvalita

Velikost stránky a okraje

Nastavte vlastní velikost stránky, pokud potřebujete jednotné rozvržení.

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)

Rozlišení (DPI)

Vyšší DPI přináší ostřejší obrázky za cenu větších PDF souborů.

pdf_doc.page_info.dpi = 300

Pro úplný seznam konfigurovatelných vlastností se podívejte na API reference.

Závěr

Nyní máte kompletní programové řešení pro generování PDF z obrázků v Pythonu pomocí Aspose.PDF for Python via .NET. SDK zajišťuje načítání obrázků, vytváření stránek, kompresi a ukládání pomocí několika řádků kódu, což vám umožní soustředit se na obchodní logiku místo nízkoúrovňové manipulace s PDF. Když přejdete do produkce, nezapomeňte získat řádnou licenci; podrobnosti jsou k dispozici na stránce s cenami a můžete začít s dočasnou licencí pro vyhodnocení. Šťastné programování a užijte si jednoduchost převodu kolekcí obrázků na vylepšené PDF!

Často kladené otázky

  • Jak mohu v Pythonu generovat PDF z obrázků pomocí Aspose.PDF?
    Použijte SDK Aspose.PDF k vytvoření objektu Document, přidejte stránku pro každý obrázek načtený pomocí Pillow, volitelně nastavte kompresi a zavolejte save(), aby se PDF zapsalo. Kompletní příklad je uveden výše.

  • Jaké formáty obrázků jsou podporovány pro generování PDF?
    SDK přijímá PNG, JPG, JPEG, BMP, GIF a TIFF přímo. Pillow může také převést nepodporované formáty na jeden z těchto před jejich přidáním do PDF.

  • Potřebuji licenci pro komerční použití?
    Ano. Získejte dočasnou zkušební licenci na stránce dočasné licence a zakupte plnou licenci prostřednictvím stránky s cenami pro produkční nasazení.

  • Mohu upravit velikost stránky PDF a rozlišení?
    Samozřejmě. Použijte page.page_info.width, page.page_info.height a pdf_doc.page_info.dpi k řízení rozměrů a DPI, jak je uvedeno v sekci Configuration / Options.

Číst dál