Convertire una raccolta di immagini sparse in un unico PDF ricercabile è una necessità frequente per gli strumenti di reporting, i generatori di fatture e i sistemi di archiviazione. Aspose.PDF for Python via .NET è un potente SDK che rende questa conversione rapida e affidabile nelle applicazioni Python. Questa guida ti accompagna nell’installazione dell’SDK, nel caricamento delle immagini con la Python Imaging Library, nella costruzione del PDF pagina per pagina, nella regolazione delle impostazioni di compressione e, infine, nel salvataggio del risultato, il tutto con esempi di codice chiari.

Prima di iniziare: requisiti e installazione

Per seguire questo tutorial è necessario:

  • Python 3.8 o versioni successive installato sulla tua macchina di sviluppo.
  • Un IDE o editor a tua scelta (VS Code, PyCharm, ecc.).
  • Accesso a Internet per scaricare il pacchetto SDK.

Installa l’SDK Aspose.PDF e la libreria Pillow (la libreria di imaging Python de‑facto) con pip:

pip install aspose-pdf pillow

Puoi anche scaricare l’SDK manualmente dalla pagina di rilascio ufficiale: Aspose.PDF for Python via .NET Download. Dopo l’installazione, importa gli spazi dei nomi richiesti nel tuo script.

Ora che l’ambiente è pronto, immergiamoci nell’implementazione.

Genera PDF da immagini in Python: Guida passo passo

Passo 1: Carica le immagini di origine

Innanzitutto, usa Pillow per aprire ogni file immagine e conservali in un elenco. Questo prepara i dati dell’immagine per il costruttore 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]

Passo 2: Crea un nuovo documento PDF

Istanzia l’oggetto Document di Aspose.PDF che conterrà le pagine.

import aspose.pdf as ap

pdf_doc = ap.Document()

Per ulteriori dettagli sulla classe Document, consulta il riferimento API.

Passo 3: Aggiungi ogni immagine come pagina separata

Scorri le immagini caricate, crea una pagina e incorpora l’immagine. L’SDK ridimensiona automaticamente l’immagine per adattarla alle dimensioni della pagina.

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

Passo 4: Configura le opzioni di compressione

Regola il livello di compressione delle immagini per ridurre le dimensioni finali del PDF senza sacrificare la qualità.

# 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

Passo 5: Salva il file PDF

Infine, scrivi il documento assemblato su disco.

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

Con questi passaggi, hai un flusso di lavoro completamente funzionale per generare PDF da immagini in Python.

Crea PDF da una collezione di immagini in Python - Esempio di codice completo

Lo script seguente mette tutti i pezzi insieme in un unico programma eseguibile.

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

Nota: Questo esempio di codice dimostra la funzionalità principale. Prima di usarlo nel tuo progetto, assicurati di aggiornare i percorsi dei file (input_images, output/result.pdf), verifica che tutte le dipendenze richieste siano correttamente installate e testa accuratamente nell’ambiente di sviluppo. Se incontri problemi, consulta la documentazione ufficiale o contatta il team di supporto per assistenza.

Impostazioni avanzate di generazione PDF: opzioni e configurazione

Oltre al flusso di lavoro di base, Aspose.PDF offre diverse proprietà per perfezionare l’output.

Livello di compressione dell’immagine

Controlla il compromesso tra qualità e dimensione del file.

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

Dimensione della pagina e margini

Imposta una dimensione di pagina personalizzata se hai bisogno di un layout uniforme.

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)

Risoluzione (DPI)

Un DPI più alto produce immagini più nitide a costo di PDF più grandi.

pdf_doc.page_info.dpi = 300

Per un elenco completo delle proprietà configurabili, consultare il riferimento API.

Conclusione

Ora hai una soluzione completa e programmatica per generare PDF da immagini in Python usando Aspose.PDF for Python via .NET. L’SDK gestisce il caricamento delle immagini, la creazione delle pagine, la compressione e il salvataggio con poche righe di codice, permettendoti di concentrarti sulla logica di business invece che sulla gestione a basso livello dei PDF. Quando passi alla produzione, ricorda di acquisire una licenza adeguata; i dettagli sono disponibili sulla pagina dei prezzi e puoi iniziare con una licenza temporanea per la valutazione. Buona programmazione e goditi la semplicità di trasformare collezioni di immagini in PDF curati!

FAQs

  • Come posso generare un PDF da immagini in Python usando Aspose.PDF?
    Usa l’SDK Aspose.PDF per creare un Document, aggiungere una pagina per ogni immagine caricata con Pillow, impostare facoltativamente la compressione e chiamare save() per scrivere il PDF. L’esempio completo è incluso sopra.

  • Quali formati immagine sono supportati per la generazione di PDF?
    L’SDK accetta direttamente PNG, JPG, JPEG, BMP, GIF, e TIFF. Pillow può anche convertire i formati non supportati in uno di questi prima di aggiungerli al PDF.

  • Ho bisogno di una licenza per uso commerciale?
    Sì. Ottieni una licenza di valutazione temporanea dalla pagina della licenza temporanea e acquista una licenza completa tramite la pagina dei prezzi per le distribuzioni in produzione.

  • Posso regolare le dimensioni della pagina PDF e la risoluzione?
    Assolutamente. Usa page.page_info.width, page.page_info.height e pdf_doc.page_info.dpi per controllare le dimensioni e i DPI, come mostrato nella sezione Configurazione / Opzioni.

Leggi di più