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żyjpage.page_info.width,page.page_info.heightipdf_doc.page_info.dpi, aby kontrolować wymiary i DPI, jak pokazano w sekcji Konfiguracja / Opcje.
