Convertir PDF a formatos de imagen en Python

Convertir PDF a imágenes en Python

Aspose.PDF for Python via .NET admite varias formas de convertir el contenido de PDF a imágenes. En la práctica, la mayoría de los flujos de trabajo utilizan una de dos opciones:

  • el enfoque Device para renderizar páginas PDF a formatos de imagen raster
  • el enfoque SaveOptions para exportar contenido PDF a SVG

Este artículo muestra cómo convertir archivos PDF a TIFF, BMP, EMF, JPEG, PNG, GIF y SVG.

La biblioteca incluye múltiples clases de renderizado. DocumentDevice está diseñado para la conversión de todo el documento, mientras ImageDevice apunta a páginas individuales.

Convertir PDF usando la clase DocumentDevice

Use DocumentDevice cuando desee renderizar todo el PDF en un único archivo TIFF de varias páginas.

La clase TiffDevice se basa en DocumentDevice y proporciona el método process para convertir todas las páginas de un archivo PDF en una sola salida TIFF.

Convertir páginas PDF a una sola imagen TIFF

Aspose.PDF for Python via .NET puede renderizar cada página de un archivo PDF en una imagen TIFF.

Pasos: Convertir PDF a TIFF en Python

  1. Cargue el PDF de origen con la clase Document.
  2. Cree los objetos TiffSettings y TiffDevice.
  3. Configure las opciones TIFF, como la compresión, la profundidad de color y el manejo de páginas en blanco.
  4. Llame al método process para escribir el archivo TIFF.

El siguiente fragmento de código muestra cómo convertir todas las páginas del PDF en una sola imagen TIFF.

import aspose.pdf as ap
from io import FileIO
from os import path
import sys

def convert_PDF_to_TIFF(infile, outfile):
    document = ap.Document(infile)

    resolution = ap.devices.Resolution(300)
    tiffSettings = ap.devices.TiffSettings()
    tiffSettings.compression = ap.devices.CompressionType.LZW
    tiffSettings.depth = ap.devices.ColorDepth.DEFAULT
    tiffSettings.skip_blank_pages = False

    tiffDevice = ap.devices.TiffDevice(resolution, tiffSettings)
    tiffDevice.process(document, f"{outfile}.tiff")

    print(infile + " converted into " + outfile)

Convertir PDF usando la clase ImageDevice

Use ImageDevice cuando necesite una salida página por página en un formato de imagen rasterizada.

ImageDevice es la clase base para BmpDevice, JpegDevice, GifDevice, PngDevice, y EmfDevice.

  • La clase BmpDevice permite convertir páginas PDF en imágenes BMP.
  • La clase EmfDevice permite convertir páginas PDF en imágenes EMF.
  • La clase JpegDevice permite convertir páginas PDF en imágenes JPEG.
  • La clase PngDevice permite convertir páginas PDF en imágenes PNG.
  • La clase GifDevice permite convertir páginas PDF en imágenes GIF.

El flujo de trabajo es el mismo para cada formato: cargar el documento, crear el dispositivo apropiado, luego procesar la página requerida.

BmpDevice expone el método process para renderizar una página específica como BMP. Las demás clases de ImageDevice siguen el mismo patrón, por lo que puede cambiar el formato cambiando la clase del dispositivo.

Los siguientes enlaces y ejemplos de código muestran cómo renderizar páginas PDF a formatos de imagen comunes:

Pasos: PDF a Imagen (BMP, EMF, JPG, PNG, GIF) en Python

  1. Cargue el archivo PDF con la clase Document.
  2. Cree una instancia de la subclase requerida de ImageDevice:
  3. Recorre las páginas que deseas exportar.
  4. Llama al ImageDevice.process() método para guardar cada página como una imagen.

Convertir PDF a BMP

import aspose.pdf as ap
from io import FileIO
from os import path
import sys

def convert_PDF_to_BMP(infile, outfile):
    document = ap.Document(infile)
    resolution = ap.devices.Resolution(300)
    device = ap.devices.BmpDevice(resolution)
    page_count = 1
    while page_count <= len(document.pages):
        image_stream = FileIO(outfile + str(page_count) + "_out.bmp", "w")
        device.process(document.pages[page_count], image_stream)
        image_stream.close()
        page_count = page_count + 1

    print(infile + " converted into " + outfile)

Convertir PDF a EMF

import aspose.pdf as ap
from io import FileIO
from os import path
import sys

def convert_PDF_to_EMF(infile, outfile):
    document = ap.Document(infile)
    resolution = ap.devices.Resolution(300)
    device = ap.devices.EmfDevice(resolution)
    page_count = 1
    while page_count <= len(document.pages):
        image_stream = FileIO(outfile + str(page_count) + "_out.emf", "w")
        device.process(document.pages[page_count], image_stream)
        image_stream.close()
        page_count = page_count + 1

    print(infile + " converted into " + outfile)

Convertir PDF a JPEG

import aspose.pdf as ap
from io import FileIO
from os import path
import sys

def convert_PDF_to_JPEG(infile, outfile):
    document = ap.Document(infile)
    resolution = ap.devices.Resolution(300)
    device = ap.devices.JpegDevice(resolution)
    page_count = 1

    while page_count <= len(document.pages):
        image_stream = FileIO(outfile + str(page_count) + "_out.jpeg", "w")
        device.process(document.pages[page_count], image_stream)
        image_stream.close()
        page_count = page_count + 1

    print(infile + " converted into " + outfile)

Convertir PDF a PNG

import aspose.pdf as ap
from io import FileIO
from os import path
import sys

def convert_PDF_to_PNG(infile, outfile):
    document = ap.Document(infile)
    resolution = ap.devices.Resolution(300)

    device = ap.devices.PngDevice(resolution)
    page_count = 1
    while page_count <= len(document.pages):
        image_stream = FileIO(outfile + str(page_count) + "_out.png", "w")
        device.process(document.pages[page_count], image_stream)
        image_stream.close()
        page_count = page_count + 1

Convertir PDF a PNG con fuente predeterminada

import aspose.pdf as ap
from io import FileIO
from os import path
import sys

def convert_PDF_to_PNG_with_default_font(infile, outfile):
    document = ap.Document(infile)
    resolution = ap.devices.Resolution(300)

    rendering_options = ap.RenderingOptions()
    rendering_options.default_font_name = "Arial"

    device = ap.devices.PngDevice(resolution)
    device.rendering_options = rendering_options

    page_count = 1
    while page_count <= len(document.pages):
        image_stream = FileIO(outfile + str(page_count) + "_out.png", "w")
        device.process(document.pages[page_count], image_stream)
        image_stream.close()
        page_count = page_count + 1

Convertir PDF a GIF

import aspose.pdf as ap
from io import FileIO
from os import path
import sys

def convert_PDF_to_GIF(infile, outfile):
    document = ap.Document(infile)
    resolution = ap.devices.Resolution(300)
    device = ap.devices.GifDevice(resolution)
    page_count = 1
    while page_count <= len(document.pages):
        image_stream = FileIO(outfile + str(page_count) + "_out.gif", "w")
        device.process(document.pages[page_count], image_stream)
        image_stream.close()
        page_count = page_count + 1

    print(infile + " converted into " + outfile)

Convertir PDF usando la clase SaveOptions

Use SaveOptions cuando desee exportar contenido PDF a SVG.

Gráficos vectoriales escalables (SVG) es un formato basado en XML para gráficos vectoriales bidimensionales. Debido a que SVG sigue siendo vectorial, es útil cuando necesita una salida escalable para la web, la interfaz de usuario o flujos de trabajo de diseño.

Los archivos SVG son de texto, permiten búsquedas y son fáciles de posprocesar en otras herramientas.

Aspose.PDF for Python via .NET puede convertir SVG a PDF y también exportar páginas PDF a SVG. Para la conversión de PDF a SVG, cree un objeto SvgSaveOptions y páselo al método document.save().

Los siguientes pasos muestran cómo convertir un archivo PDF a SVG con Python.

Pasos: Convertir PDF a SVG en Python

  1. Cargue el PDF de origen con la clase Document.
  2. Cree un objeto SvgSaveOptions y configure las opciones necesarias.
  3. Llame al método document.save() con la instancia de SvgSaveOptions para escribir la salida SVG.

Convertir PDF a SVG

import aspose.pdf as ap
from io import FileIO
from os import path
import sys

def convert_PDF_to_SVG(infile, outfile):
    document = ap.Document(infile)

    save_options = ap.SvgSaveOptions()
    save_options.compress_output_to_zip_archive = False
    save_options.treat_target_file_name_as_directory = True

    document.save(f"{outfile}.svg", save_options)

Conversiones relacionadas