Konwersja zbioru rozproszonych obrazów do jednego, przeszukiwalnego PDF jest częstym wymogiem dla narzędzi raportujących, generatorów faktur i systemów archiwizacji. Aspose.PDF for Python via .NET jest potężnym zestawem SDK, który umożliwia szybką i niezawodną konwersję w aplikacjach Python. Ten przewodnik prowadzi Cię przez instalację SDK, ładowanie obrazów przy użyciu Python Imaging Library, budowanie PDF strona po stronie, dostosowywanie ustawień kompresji oraz ostateczne zapisanie wyniku, wszystko z przejrzystymi przykładami kodu.

Zanim rozpoczniesz: Wymagania wstępne i instalacja

Aby wykonać ten samouczek, potrzebujesz:

  • Python 3.8 lub nowszy zainstalowany na Twoim komputerze deweloperskim.
  • IDE lub edytor według wyboru (VS Code, PyCharm itp.).
  • Dostęp do internetu w celu pobrania pakietu SDK.

Zainstaluj SDK Aspose.PDF oraz bibliotekę Pillow (de‑facto Python Imaging Library) przy użyciu pip:

pip install aspose-pdf pillow

Możesz również pobrać SDK ręcznie ze strony oficjalnych wydań: Aspose.PDF for Python via .NET Download.

Teraz, gdy środowisko jest gotowe, zanurzmy się w implementację.

Generowanie PDF z obrazów w Pythonie: przewodnik krok po kroku

Krok 1: Załaduj obrazy źródłowe

Najpierw użyj Pillow, aby otworzyć każdy plik obrazu i przechować je na liście. To przygotowuje dane obrazu dla generatora 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: Utwórz nowy dokument PDF

Utwórz obiekt Document Aspose.PDF, który będzie przechowywał strony.

import aspose.pdf as ap

pdf_doc = ap.Document()

Aby uzyskać więcej szczegółów na temat klasy Document, zobacz referencję API.

Krok 3: Dodaj każdy obraz jako osobną stronę

Iteruj po załadowanych obrazach, utwórz stronę i osadź obraz. SDK automatycznie skaluje obraz, aby dopasować go do rozmiaru strony.

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: Skonfiguruj opcje kompresji

Dostosuj poziom kompresji obrazu, aby zmniejszyć ostateczny rozmiar PDF bez utraty jakości.

# 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: Zapisz plik PDF

Na koniec zapisz złożony dokument na dysku.

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

Dzięki tym krokom masz w pełni funkcjonalny przepływ pracy, aby generować PDF z obrazów w Pythonie.

Tworzenie PDF z kolekcji obrazów w Pythonie – kompletny przykład kodu

Poniższy skrypt łączy wszystkie elementy w jeden, gotowy do uruchomienia program.

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

Uwaga: Ten przykład kodu demonstruje podstawową funkcjonalność. Przed użyciem go w swoim projekcie upewnij się, że zaktualizowałeś ścieżki do plików (input_images, output/result.pdf), sprawdziłeś, czy wszystkie wymagane zależności są prawidłowo zainstalowane, oraz dokładnie przetestowałeś w środowisku deweloperskim. Jeśli napotkasz jakiekolwiek problemy, odwołaj się do oficjalnej dokumentacji lub skontaktuj się z zespołem wsparcia w celu uzyskania pomocy.

Zaawansowane ustawienia generowania PDF: opcje i konfiguracja

Poza podstawowym przepływem pracy, Aspose.PDF oferuje kilka właściwości, które pozwalają precyzyjnie dostosować wynik.

Poziom kompresji obrazu

Kontroluj kompromis między jakością a rozmiarem pliku.

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

Rozmiar strony i marginesy

Ustaw niestandardowy rozmiar strony, jeśli potrzebujesz jednolitego układu.

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)

Rozdzielczość (DPI)

Wyższe DPI zapewnia ostrzejsze obrazy kosztem większych plików PDF.

pdf_doc.page_info.dpi = 300

Aby uzyskać pełną listę konfigurowalnych właściwości, zapoznaj się z referencją API.

Podsumowanie

Masz teraz kompletną, programistyczną metodę generowania PDF z obrazów w Pythonie przy użyciu Aspose.PDF for Python via .NET. SDK obsługuje wczytywanie obrazów, tworzenie stron, kompresję i zapisywanie przy użyciu kilku linii kodu, pozwalając skupić się na logice biznesowej zamiast na niskopoziomowej obsłudze PDF. Przechodząc do produkcji, pamiętaj o uzyskaniu odpowiedniej licencji – szczegóły dostępne są na stronie cenowej i możesz rozpocząć od tymczasowej licencji w celu oceny. Powodzenia w kodowaniu i ciesz się prostotą przekształcania kolekcji obrazów w dopracowane PDF‑y!

FAQs

  • Jak mogę wygenerować PDF z obrazów w Pythonie przy użyciu Aspose.PDF?
    Użyj SDK Aspose.PDF, aby utworzyć Document, dodać stronę dla każdego obrazu wczytanego przy pomocy Pillow, opcjonalnie ustawić kompresję i wywołać save(), aby zapisać PDF. Pełny przykład znajduje się powyżej.

  • Jakie formaty obrazu są obsługiwane przy generowaniu PDF?
    SDK akceptuje PNG, JPG, JPEG, BMP, GIF, oraz TIFF bezpośrednio. Pillow może również konwertować nieobsługiwane formaty na jeden z tych przed dodaniem ich do PDF.

  • Czy potrzebuję licencji do użytku komercyjnego?
    Tak. Uzyskaj tymczasową licencję ewaluacyjną ze strony tymczasowej licencji i zakup pełną licencję poprzez stronę cenową na potrzeby wdrożeń produkcyjnych.

  • Czy mogę dostosować rozmiar strony PDF i rozdzielczość?
    Zdecydowanie. Użyj page.page_info.width, page.page_info.height i pdf_doc.page_info.dpi, aby kontrolować wymiary i DPI, jak pokazano w sekcji Konfiguracja / Opcje.

Czytaj więcej