Convertir una colección de imágenes dispersas en un solo PDF buscable es un requisito frecuente para herramientas de generación de informes, generadores de facturas y sistemas de archivo. Aspose.PDF for Python via .NET es un SDK potente que hace que esta conversión sea rápida y fiable en aplicaciones Python. Esta guía le muestra cómo instalar el SDK, cargar imágenes con la Python Imaging Library, construir el PDF página por página, ajustar la configuración de compresión y, finalmente, guardar el resultado, todo con ejemplos de código claros.

Antes de comenzar: requisitos previos e instalación

Para seguir este tutorial necesitas:

  • Python 3.8 o una versión más reciente instalado en su máquina de desarrollo.
  • Un IDE o editor de su elección (VS Code, PyCharm, etc.).
  • Acceso a Internet para descargar el paquete SDK.

Instale el SDK de Aspose.PDF y la biblioteca Pillow (la biblioteca de imágenes Python de facto) con pip:

pip install aspose-pdf pillow

También puedes descargar el SDK manualmente desde la página oficial de lanzamientos: Aspose.PDF for Python via .NET Download. Después de la instalación, importa los espacios de nombres requeridos en tu script.

Ahora que el entorno está listo, vamos a sumergirnos en la implementación.

Generar PDF a partir de imágenes en Python: Guía paso a paso

Paso 1: Cargar las imágenes de origen

Primero, use Pillow para abrir cada archivo de imagen y mantenerlos en una lista. Esto prepara los datos de la imagen para el generador de 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]

Paso 2: Crear un nuevo documento PDF

Instancie el objeto Document de Aspose.PDF que contendrá las páginas.

import aspose.pdf as ap

pdf_doc = ap.Document()

Para obtener más detalles sobre la clase Document, consulte la referencia de API.

Paso 3: Agregar cada imagen como una página separada

Recorra las imágenes cargadas, cree una página e inserte la imagen. El SDK ajusta automáticamente la imagen para que se adapte al tamaño de la página.

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

Paso 4: Configurar opciones de compresión

Ajuste el nivel de compresión de la imagen para reducir el tamaño final del PDF sin sacrificar la calidad.

# 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

Paso 5: Guardar el archivo PDF

Finalmente, escriba el documento ensamblado en el disco.

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

Con estos pasos, tienes un flujo de trabajo completamente funcional para generar PDF a partir de imágenes en Python.

Crear PDF a partir de una colección de imágenes en Python - Ejemplo de código completo

El siguiente script reúne todas las piezas en un único programa ejecutable.

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: Este ejemplo de código demuestra la funcionalidad principal. Antes de usarlo en su proyecto, asegúrese de actualizar las rutas de los archivos (input_images, output/result.pdf), verifique que todas las dependencias requeridas estén correctamente instaladas y pruebe exhaustivamente en su entorno de desarrollo. Si encuentra algún problema, consulte la documentación oficial o póngase en contacto con el equipo de soporte para obtener ayuda.

Configuración avanzada de generación de PDF: Opciones y configuración

Más allá del flujo de trabajo básico, Aspose.PDF ofrece varias propiedades para afinar la salida.

Nivel de compresión de imagen

Controla el compromiso entre la calidad y el tamaño del archivo.

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

Tamaño de página y márgenes

Establezca un tamaño de página personalizado si necesita un diseño 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)

Resolución (DPI)

Una mayor DPI produce imágenes más nítidas a costa de PDFs más grandes.

pdf_doc.page_info.dpi = 300

Para obtener una lista completa de las propiedades configurables, consulte la referencia de API.

Conclusión

Ahora tienes una solución completa y programática para generar PDF a partir de imágenes en Python usando Aspose.PDF for Python via .NET. El SDK maneja la carga de imágenes, la creación de páginas, la compresión y el guardado con solo unas pocas líneas de código, permitiéndote centrarte en la lógica de negocio en lugar del manejo de PDF de bajo nivel. Cuando pases a producción, recuerda adquirir una licencia adecuada; los detalles están disponibles en la página de precios y puedes comenzar con una licencia temporal para evaluación. ¡Feliz codificación y disfruta de la simplicidad de convertir colecciones de imágenes en PDFs pulidos!

Preguntas frecuentes

  • ¿Cómo puedo generar PDF a partir de imágenes en Python usando Aspose.PDF?
    Utilice el SDK de Aspose.PDF para crear un Document, agregar una página por cada imagen cargada con Pillow, opcionalmente establecer compresión y llamar a save() para escribir el PDF. El ejemplo completo se incluye arriba.

  • ¿Qué formatos de imagen son compatibles para la generación de PDF?
    El SDK acepta directamente PNG, JPG, JPEG, BMP, GIF, y TIFF. Pillow también puede convertir formatos no compatibles en uno de estos antes de agregarlos al PDF.

  • ¿Necesito una licencia para uso comercial?
    Sí. Obtenga una licencia de evaluación temporal desde la página de licencia temporal y compre una licencia completa a través de la página de precios para implementaciones de producción.

  • ¿Puedo ajustar el tamaño de página y la resolución del PDF?
    Absolutamente. Use page.page_info.width, page.page_info.height y pdf_doc.page_info.dpi para controlar las dimensiones y el DPI, como se muestra en la sección Configuración / Opciones.

Leer más