Un desarrollador frontend recibe un PDF de directrices de marca de 40 páginas y necesita incluir tres páginas específicas en un tablero de Figma. Un ingeniero de soporte quiere pegar un diagrama de una hoja de datos en un hilo de Slack. Un abogado necesita adjuntar una página de un contrato firmado a un correo sin enviar el archivo completo.
PDF está diseñado para documentos de diseño fijo. La web, los editores de imágenes y las aplicaciones de chat están diseñados para píxeles. Convertir una página PDF en una imagen cierra esa brecha, pero el método que elijas cambia la calidad de salida, el tamaño del archivo y el control que conservas.
Por qué PDF es a la vez excelente y molesto para esto
PDF almacena páginas como una secuencia de comandos de dibujo: colocar este glifo, dibujar este vector, renderizar esta imagen en este tamaño. Eso lo hace independiente de la resolución y visualmente consistente. También significa que un PDF no es una imagen. Para convertirlo en una, algo debe renderizar esos comandos sobre un lienzo rasterizado.
Las ventajas:
- El texto y los vectores permanecen nítidos a cualquier nivel de zoom porque se describen matemáticamente, no se almacenan como píxeles.
- Un solo PDF puede contener cientos de páginas en un archivo.
- Las fuentes, los perfiles de color y las anotaciones viajan con el documento.
Las desventajas:
- Los lectores de PDF no coinciden en el renderizado. La misma página puede verse ligeramente diferente en Adobe Acrobat, Preview, Chrome o una biblioteca headless.
- Los PDF escaneados son solo imágenes envueltas en contenedores PDF, así que "convertirlos" significa volver a codificarlos, lo que puede añadir artefactos o aumentar el tamaño.
- Los PDF complejos con transparencias, capas o formularios interactivos pueden aplanarse de forma impredecible.
- Las dimensiones de página varían. Una página US Letter a 72 DPI mide 612 por 792 píxeles. A 300 DPI, 2550 por 3300. Si no especificas la resolución, puedes obtener algo inutilizable.
A qué suelen convertirse los PDF
La mayoría de las tareas de conversión se agrupan en uno de estos tres formatos de salida. Cada uno cumple una función distinta.
| Formato | Ideal para | Compromiso |
|---|---|---|
| JPG | Fotos, vistas previas, archivos adjuntos de correo, galerías web | Con pérdida, pero archivos pequeños |
| PNG | Capturas de pantalla, diagramas, cualquier cosa que necesite transparencia | Sin pérdida, más grande que JPG para fotos |
| WebP | Web moderna, aplicaciones, donde el ancho de banda importa | Más pequeño que JPG/PNG, ligeramente menos universal |
Luego están las dimensiones prácticas:
- Página única vs. lote. Una página es sencilla. Una carpeta de facturas requiere automatización.
- DPI. 150 DPI es suficiente para miniaturas. 300 DPI es el estándar para impresión y OCR. 600 DPI es excesivo a menos que examines detalles finos.
- Espacio de color. RGB es seguro para pantallas. Los PDF en CMYK convertidos a RGB pueden desplazar los colores si la conversión es simple.
Cómo elegir el enfoque adecuado
La herramienta adecuada depende de lo que estés optimizando.
Conversión rápida en el navegador
Si solo necesitas una página como JPG, PNG o WebP y el archivo no es tan sensible como para requerir un servidor, un conversor basado en navegador es la opción más rápida. Nuestras herramientas PDF a JPG, PDF a PNG y PDF a WebP renderizan el PDF localmente. El archivo nunca abandona tu dispositivo, lo cual importa para contratos, identificaciones y registros médicos.
Trabajo por lotes en línea de comandos
Para carpetas de PDF o pipelines de CI, una herramienta de línea de comandos gana. Obtienes salida repetible, control de DPI y scripting.
Conversión dentro de una aplicación
Cuando la conversión forma parte de un producto, llamar a una biblioteca suele ser más limpio que ejecutar una herramienta CLI mediante shell. Elimina una dependencia externa y te da manejo de errores coherente con el resto de tu código.
Conversión en Windows
Adobe Acrobat
- Abre el PDF y ve a la página que necesitas.
- Elige Archivo > Exportar a > Imagen > JPEG/PNG/TIFF.
- Establece la resolución de salida en el diálogo de exportación.
- Guarda.
Acrobat ofrece salida confiable, pero no es gratuito ni scriptable sin el SDK de pago.
PDF-XChange Editor
Una alternativa más ligera con una versión gratuita. Archivo > Exportar > Exportar páginas como imágenes te permite elegir formato, DPI y rango de páginas.
PowerShell con pdftoppm
Instala Poppler para Windows, luego usa pdftoppm desde PowerShell:
pdftoppm -jpeg -r 300 input.pdf output
Esto produce output-1.jpg, output-2.jpg, y así sucesivamente, una por página, a 300 DPI.
Para PNG con fondos transparentes:
pdftoppm -png -r 300 input.pdf output
Para una sola página:
pdftoppm -jpeg -r 300 -f 1 -l 1 input.pdf output
Los flags -f y -l establecen la primera y última página.
PowerShell con ImageMagick
ImageMagick puede renderizar PDF, pero en Windows suele delegar en Ghostscript por debajo:
magick -density 300 input.pdf[0] output.jpg
El [0] significa la primera página. Sin él, ImageMagick puede intentar producir una imagen de varios fotogramas.
Conversión en macOS
Preview
- Abre el PDF en Preview.
- Selecciona la miniatura de la página que deseas.
- Elige Archivo > Exportar, selecciona el formato y establece la resolución.
Preview es rápido y privado, pero maneja una página a la vez.
Terminal con sips
macOS incluye sips, pero no renderiza bien el texto de PDF. Úsalo solo para PDF que ya sean mapas de bits:
sips -s format jpeg input.pdf --out output.jpg
Para un renderizado real de PDF, instala Poppler mediante Homebrew:
brew install poppler
pdftoppm -jpeg -r 300 input.pdf output
Acción rápida de Automator
Puedes construir un servicio de clic derecho en Automator que ejecute pdftoppm sobre cualquier PDF seleccionado. Esto es útil si conviertes páginas con regularidad y no quieres recordar los flags.
Conversión en Linux
Poppler suele ser la mejor opción en Linux.
sudo apt install poppler-utils
pdftoppm -jpeg -r 300 input.pdf output
pdftoppm -png -r 300 input.pdf output
Para salida WebP, convierte primero a PNG y luego usa cwebp:
pdftoppm -png -r 300 input.pdf temp
cwebp temp-1.png -o output.webp
Conversión por lotes
Si tienes una carpeta de PDF y quieres una imagen por primera página:
for f in *.pdf; do
pdftoppm -jpeg -r 300 -f 1 -l 1 "$f" "${f%.pdf}"
done
ImageMagick
ImageMagick funciona en Linux, pero suele ser más lento para PDF porque rasteriza a través de Ghostscript:
magick -density 300 input.pdf[0] -quality 90 output.jpg
Establece -density antes de leer el PDF. Colocarlo después no servirá.
Conversión con código
TypeScript / Node.js
Usa pdfjs-dist para renderizar páginas en un canvas, luego exporta a datos de imagen.
import * as pdfjsLib from "pdfjs-dist"
import { createCanvas } from "canvas"
import fs from "fs"
async function pdfPageToPng(
pdfPath: string,
pageNumber: number,
outputPath: string,
scale: number = 2
) {
const data = new Uint8Array(fs.readFileSync(pdfPath))
const pdf = await pdfjsLib.getDocument({ data }).promise
const page = await pdf.getPage(pageNumber)
const viewport = page.getViewport({ scale })
const canvas = createCanvas(viewport.width, viewport.height)
const context = canvas.getContext("2d")
await page.render({ canvasContext: context, viewport }).promise
const buffer = canvas.toBuffer("image/png")
fs.writeFileSync(outputPath, buffer)
await pdf.destroy()
}
await pdfPageToPng("input.pdf", 1, "output.png", 2)
El valor scale se mapea aproximadamente a DPI: un scale de 2 a 72 DPI da una salida de 144 DPI. Para 300 DPI, usa un scale de aproximadamente 4.17.
En el navegador, nuestro conversor PDF a PNG realiza el mismo paso de renderizado en canvas sin enviar el archivo a ningún sitio.
PHP
PHP puede ejecutar pdftoppm mediante shell o usar bibliotecas como spatie/pdf-to-image, que envuelve ImageMagick:
<?php
use Spatie\PdfToImage\Pdf;
$pdf = new Pdf('input.pdf');
$pdf->setPage(1)
->setOutputFormat('png')
->saveImage('output.png');
Si prefieres no añadir una dependencia, llama directamente a Poppler:
<?php
function pdfPageToPng(string $input, int $page, string $output, int $dpi = 300): void {
$cmd = sprintf(
'pdftoppm -png -r %d -f %d -l %d %s %s',
$dpi,
$page,
$page,
escapeshellarg($input),
escapeshellarg($output)
);
exec($cmd);
}
pdfPageToPng('input.pdf', 1, 'output', 300);
Esto escribe output-1.png. Añade tu propio manejo de errores antes de usarlo en producción.
Go
Go no tiene un renderizador de PDF integrado, pero github.com/gen2brain/go-fitz envuelve MuPDF:
package main
import (
"image/jpeg"
"os"
"github.com/gen2brain/go-fitz"
)
func main() {
doc, err := fitz.New("input.pdf")
if err != nil {
panic(err)
}
defer doc.Close()
img, err := doc.Image(0)
if err != nil {
panic(err)
}
out, err := os.Create("output.jpg")
if err != nil {
panic(err)
}
defer out.Close()
if err := jpeg.Encode(out, img, &jpeg.Options{Quality: 90}); err != nil {
panic(err)
}
}
go-fitz devuelve imágenes a la resolución de renderizado por defecto del PDF. Consulta la documentación de la biblioteca si necesitas control de DPI.
Java
Apache PDFBox es la opción estándar para trabajar con PDF en Java.
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.rendering.PDFRenderer;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
public class PdfToImage {
public static void main(String[] args) throws IOException {
try (PDDocument document = PDDocument.load(new File("input.pdf"))) {
PDFRenderer renderer = new PDFRenderer(document);
BufferedImage image = renderer.renderImageWithDPI(0, 300);
ImageIO.write(image, "png", new File("output.png"));
}
}
}
Dependencia de Maven:
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>pdfbox</artifactId>
<version>3.0.2</version>
</dependency>
renderImageWithDPI recibe un índice de página basado en cero y un valor de DPI.
Python
Python lo hace sencillo con pymupdf o pdf2image.
Con pymupdf:
import fitz
doc = fitz.open("input.pdf")
page = doc[0]
mat = fitz.Matrix(2, 2)
pix = page.get_pixmap(matrix=mat)
pix.save("output.png")
El Matrix controla la escala. Para aproximadamente 300 DPI desde un PDF de 72 DPI, usa fitz.Matrix(300/72, 300/72).
Con pdf2image, que envuelve Poppler:
from pdf2image import convert_from_path
images = convert_from_path("input.pdf", dpi=300, first_page=1, last_page=1)
images[0].save("output.jpg", "JPEG", quality=90)
pdf2image es conveniente, pero requiere que Poppler esté instalado en el sistema.
Errores comunes
- Olvidar el DPI. El renderizado por defecto de PDF suele ser 72 o 96 DPI. A esa resolución, el texto se ve borroso. Especifica siempre el DPI de salida si la calidad importa.
- Ignorar el espacio de color. Un PDF en CMYK convertido a RGB sin un perfil puede verse desvaído o sobresaturado.
- Volver a codificar PDF escaneados. Si el PDF ya es un escaneo JPEG, convertirlo a PNG no recuperará detalle perdido. Solo hará el archivo más grande.
- Sustitución de fuentes. Los servidores headless a veces carecen de las fuentes incrustadas en el PDF. El renderizador las sustituye y el diseño se rompe. Incrustar fuentes al crear el PDF evita esto.
- Numeración de páginas desfasada. Las APIs de código suelen usar índices de página basados en cero. Las herramientas de línea de comandos suelen usar índices basados en uno.
Qué usar en cada caso
- Uso personal puntual: Preview en macOS, un lector de PDF en Windows, o un conversor de navegador.
- Procesamiento por lotes en servidor:
pdftoppmopdf2image. - Dentro de un producto: Apache PDFBox para Java,
pymupdfpara Python,pdfjs-distpara TypeScript. - Archivos sensibles a la privacidad: Usa una herramienta basada en navegador para que el PDF nunca abandone el dispositivo.
Si quieres el camino más rápido sin instalar nada, nuestros conversores PDF a JPG, PDF a PNG y PDF a WebP se ejecutan completamente en el navegador.



