Um desenvolvedor frontend recebe um PDF de diretrizes de marca de 40 páginas e precisa inserir três páginas específicas em um quadro do Figma. Um engenheiro de suporte quer colar um diagrama de um datasheet em uma conversa do Slack. Um advogado precisa anexar a página de um contrato assinado a um e-mail sem enviar o arquivo inteiro.
O PDF foi feito para documentos com layout fixo. A web, editores de imagem e aplicativos de mensagens funcionam com pixels. Converter uma página de PDF em imagem preenche essa lacuna, mas o método escolhido altera a qualidade do resultado, o tamanho do arquivo e o nível de controle que você mantém.
Por que o PDF é ótimo e irritante para isso
O PDF armazena páginas como um fluxo de comandos de desenho: posicione esse glifo, desenhe esse vetor, renderize essa imagem nesse tamanho. Isso o torna independente de resolução e visualmente consistente. Também significa que um PDF não é uma imagem. Para transformá-lo em uma, algo precisa renderizar esses comandos em uma tela rasterizada.
As vantagens:
- Texto e vetores permanecem nítidos em qualquer nível de zoom porque são descritos matematicamente, não armazenados como pixels.
- Um único PDF pode conter centenas de páginas em um só arquivo.
- Fontes, perfis de cor e anotações acompanham o documento.
As dificuldades:
- Leitores de PDF renderizam de formas diferentes. A mesma página pode parecer ligeiramente distinta no Adobe Acrobat, Preview, Chrome ou em uma biblioteca headless.
- PDFs digitalizados são apenas imagens dentro de um container PDF, então "convertê-los" significa reencodar, o que pode adicionar artefatos ou inchá-los.
- PDFs complexos com transparência, camadas ou formulários interativos podem ser achatados de forma imprevisível.
- As dimensões das páginas variam. Uma página US Letter a 72 DPI tem 612 por 792 pixels. A 300 DPI, tem 2550 por 3300. Se você não especificar a resolução, pode obter algo inutilizável.
No que as pessoas realmente convertem PDFs
A maioria das tarefas de conversão se encaixa em um dos três formatos de saída. Cada um tem uma função diferente.
| Formato | Ideal para | Compromisso |
|---|---|---|
| JPG | Fotos, prévias, anexos de e-mail, galerias web | Com perda, mas arquivos pequenos |
| PNG | Capturas de tela, diagramas, qualquer coisa que precise de transparência | Sem perda, maior que JPG para fotos |
| WebP | Web moderna, aplicativos, qualquer lugar onde a banda importe | Menor que JPG/PNG, ligeiramente menos universal |
Depois, há as dimensões práticas:
- Página única vs. lote. Uma página é fácil. Uma pasta de faturas exige automação.
- DPI. 150 DPI é suficiente para miniaturas. 300 DPI é o padrão para impressão e OCR. 600 DPI é exagero, a menos que você vá ampliar detalhes finos.
- Espaço de cor. RGB é seguro para telas. PDFs CMYK convertidos para RGB podem sofrer mudanças de cor se a conversão for ingênua.
Escolhendo a abordagem certa
A ferramenta certa depende do que você está otimizando.
Conversão rápida no navegador
Se você só precisa de uma página como JPG, PNG ou WebP e o arquivo não é sensível a ponto de exigir um servidor, um conversor baseado no navegador é o caminho mais rápido. Nossas ferramentas PDF para JPG, PDF para PNG e PDF para WebP renderizam o PDF localmente. O arquivo nunca sai do seu dispositivo, o que importa para contratos, documentos de identidade e prontuários médicos.
Trabalho em lote pela linha de comando
Para pastas de PDFs ou pipelines de CI, uma ferramenta de linha de comando é superior. Você obtém saída repetível, controle de DPI e scriptabilidade.
Conversão dentro de uma aplicação
Quando a conversão faz parte de um produto, chamar uma biblioteca geralmente é mais limpo do que executar uma ferramenta CLI via shell. Isso remove uma dependência externa e oferece tratamento de erros consistente com o restante da base de código.
Convertendo no Windows
Adobe Acrobat
- Abra o PDF e vá até a página desejada.
- Escolha Arquivo > Exportar para > Imagem > JPEG/PNG/TIFF.
- Defina a resolução de saída na caixa de diálogo de exportação.
- Salve.
O Acrobat produz resultados confiáveis, mas não é gratuito e não é scriptável sem o SDK pago.
PDF-XChange Editor
Uma alternativa mais leve com uma camada gratuita. Arquivo > Exportar > Exportar páginas como imagens permite escolher o formato, o DPI e o intervalo de páginas.
PowerShell com pdftoppm
Instale o Poppler para Windows e use o pdftoppm pelo PowerShell:
pdftoppm -jpeg -r 300 input.pdf output
Isso produz output-1.jpg, output-2.jpg e assim por diante, uma por página, a 300 DPI.
Para PNG com fundos transparentes:
pdftoppm -png -r 300 input.pdf output
Para uma única página:
pdftoppm -jpeg -r 300 -f 1 -l 1 input.pdf output
As flags -f e -l definem a primeira e a última página.
PowerShell com ImageMagick
O ImageMagick pode renderizar PDFs, mas no Windows geralmente delega isso ao Ghostscript:
magick -density 300 input.pdf[0] output.jpg
O [0] significa a primeira página. Sem ele, o ImageMagick pode tentar produzir uma imagem com vários quadros.
Convertendo no macOS
Preview
- Abra o PDF no Preview.
- Selecione a miniatura da página desejada.
- Escolha Arquivo > Exportar, selecione o formato e defina a resolução.
O Preview é rápido e privado, mas lida com uma página por vez.
Terminal com sips
O macOS inclui o sips, mas ele não renderiza texto de PDF bem. Use-o apenas para PDFs que já são bitmaps:
sips -s format jpeg input.pdf --out output.jpg
Para renderização real de PDF, instale o Poppler via Homebrew:
brew install poppler
pdftoppm -jpeg -r 300 input.pdf output
Ação rápida do Automator
Você pode criar um serviço de clique com o botão direito no Automator que executa o pdftoppm em qualquer PDF selecionado. Isso é útil se você converte páginas com frequência e não quer decorar as flags.
Convertendo no Linux
O Poppler geralmente é a melhor escolha no Linux.
sudo apt install poppler-utils
pdftoppm -jpeg -r 300 input.pdf output
pdftoppm -png -r 300 input.pdf output
Para saída WebP, converta primeiro para PNG e depois use o cwebp:
pdftoppm -png -r 300 input.pdf temp
cwebp temp-1.png -o output.webp
Conversão em lote
Se você tem uma pasta de PDFs e quer uma imagem por primeira página:
for f in *.pdf; do
pdftoppm -jpeg -r 300 -f 1 -l 1 "$f" "${f%.pdf}"
done
ImageMagick
O ImageMagick funciona no Linux, mas geralmente é mais lento para PDFs porque rasteriza via Ghostscript:
magick -density 300 input.pdf[0] -quality 90 output.jpg
Defina -density antes de ler o PDF. Colocá-lo depois não ajuda.
Convertendo com código
TypeScript / Node.js
Use o pdfjs-dist para renderizar páginas em um canvas e depois exportar para dados de imagem.
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)
O valor scale mapeia aproximadamente para DPI: um scale de 2 a 72 DPI resulta em saída de 144 DPI. Para 300 DPI, use um scale de aproximadamente 4.17.
No navegador, nosso conversor PDF para PNG executa o mesmo passo de renderização no canvas sem enviar o arquivo a lugar nenhum.
PHP
O PHP pode chamar o pdftoppm via shell ou usar bibliotecas como spatie/pdf-to-image, que envolve o ImageMagick:
<?php
use Spatie\PdfToImage\Pdf;
$pdf = new Pdf('input.pdf');
$pdf->setPage(1)
->setOutputFormat('png')
->saveImage('output.png');
Se preferir não adicionar uma dependência, chame o Poppler diretamente:
<?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);
Isso escreve output-1.png. Adicione sua própria verificação de erros antes de usar em produção.
Go
Go não tem um renderizador de PDF embutido, mas o github.com/gen2brain/go-fitz envolve o 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)
}
}
O go-fitz retorna imagens na resolução padrão de renderização do PDF. Consulte a documentação da biblioteca se precisar de controle de DPI.
Java
O Apache PDFBox é a escolha padrão para trabalhar com PDF em 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"));
}
}
}
Dependência do Maven:
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>pdfbox</artifactId>
<version>3.0.2</version>
</dependency>
O renderImageWithDPI recebe um índice de página baseado em zero e um valor de DPI.
Python
Python facilita isso com pymupdf ou pdf2image.
Com 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")
O Matrix controla o scale. Para aproximadamente 300 DPI a partir de um PDF de 72 DPI, use fitz.Matrix(300/72, 300/72).
Com pdf2image, que envolve o 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)
O pdf2image é conveniente, mas exige que o Poppler esteja instalado no sistema.
Armadilhas comuns
- Esquecer o DPI. A renderização padrão de PDF geralmente é 72 ou 96 DPI. Nessa resolução, o texto fica borrado. Sempre especifique o DPI de saída se a qualidade importa.
- Ignorar o espaço de cor. Um PDF CMYK convertido para RGB sem um perfil pode parecer desbotado ou super-saturado.
- Reencodar PDFs digitalizados. Se o PDF já é um scan JPEG, convertê-lo para PNG não recuperará detalhes perdidos. Apenas aumentará o tamanho do arquivo.
- Substituição de fontes. Servidores headless às vezes não têm as fontes embutidas no PDF. O renderizador substitui e o layout quebra. Embutir fontes ao criar o PDF evita isso.
- Erro de numeração de páginas por um. APIs de código geralmente usam índices de página baseados em zero. Ferramentas de linha de comando geralmente usam base um.
O que usar em cada caso
- Uso pessoal pontual: Preview no macOS, um leitor de PDF no Windows ou um conversor no navegador.
- Processamento em lote em servidor:
pdftoppmoupdf2image. - Dentro de um produto: Apache PDFBox para Java,
pymupdfpara Python,pdfjs-distpara TypeScript. - Arquivos sensíveis à privacidade: use uma ferramenta baseada no navegador para que o PDF nunca saia do dispositivo.
Se você quer o caminho mais rápido sem instalar nada, nossos conversores PDF para JPG, PDF para PNG e PDF para WebP funcionam inteiramente no navegador.



