Uno sviluppatore frontend riceve un PDF di linee guida del brand di 40 pagine e deve inserire tre pagine specifiche in una board di Figma. Un ingegnere del supporto vuole incollare un diagramma estratto da un datasheet in un thread di Slack. Un avvocato deve allegare a un'email la pagina di un contratto firmato senza inviare l'intero file.
Il PDF è nato per documenti a layout fisso. Il web, gli editor di immagini e le app di chat sono fatti di pixel. Convertire una pagina PDF in un'immagine colma questo divario, ma il metodo scelto cambia la qualità dell'output, la dimensione del file e il livello di controllo che si conserva.
Perché il PDF è utile e frustrante per questo compito
Il PDF memorizza le pagine come flusso di comandi di disegno: posiziona questo glifo, disegna questo vettore, renderizza questa immagine a questa dimensione. Questo lo rende indipendente dalla risoluzione e visivamente coerente. Significa anche che un PDF non è un'immagine. Per trasformarlo in immagine, qualcosa deve renderizzare quei comandi su una tela raster.
I lati positivi:
- Testo e vettori restano nitidi a qualsiasi livello di zoom perché sono descritti matematicamente, non memorizzati come pixel.
- Un singolo PDF può contenere centinaia di pagine in un unico file.
- Caratteri, profili colore e annotazioni viaggiano con il documento.
I lati difficili:
- I lettori PDF interpretano il rendering in modo diverso. La stessa pagina può apparire leggermente diversa in Adobe Acrobat, Preview, Chrome o una libreria headless.
- I PDF scansionati sono solo immagini racchiuse in un contenitore PDF: convertirli significa ricodificarle, con il rischio di aggiungere artefatti o appesantire il file.
- I PDF complessi con trasparenze, livelli o moduli interattivi possono appiattirsi in modo imprevedibile.
- Le dimensioni della pagina variano. Una pagina US Letter a 72 DPI è di 612 × 792 pixel. A 300 DPI diventa 2550 × 3300. Se non si specifica la risoluzione, si rischia di ottenere qualcosa di inutilizzabile.
In cosa si convertono realmente i PDF
La maggior parte delle conversioni rientra in uno di tre formati di output. Ognuno ha uno scopo diverso.
| Formato | Ideale per | Compromesso |
|---|---|---|
| JPG | Foto, anteprime, allegati email, gallerie web | Con perdita, ma file di piccole dimensioni |
| PNG | Screenshot, diagrammi, tutto ciò che richiede la trasparenza | Senza perdita, più pesante del JPG per le foto |
| WebP | Web moderno, app, ovunque conti la larghezza di banda | Più leggero di JPG/PNG, leggermente meno universale |
Poi ci sono le dimensioni pratiche:
- Pagina singola o batch. Una pagina è semplice. Una cartella di fatture richiede automazione.
- DPI. 150 DPI vanno bene per le miniature. 300 DPI è lo standard per la stampa e l'OCR. 600 DPI è eccessivo, a meno di dover ingrandire dettagli molto fini.
- Spazio colore. RGB è sicuro per gli schermi. I PDF CMYK convertiti in RGB possono subire variazioni di colore se la conversione è banale.
Scegliere l'approccio giusto
Lo strumento giusto dipende da ciò che si vuole ottimizzare.
Conversione rapida nel browser
Se ti serve una pagina come JPG, PNG o WebP e il file non è così sensibile da richiedere un server, un convertitore basato sul browser è la strada più veloce. I nostri strumenti PDF in JPG, PDF in PNG e PDF in WebP renderizzano il PDF localmente. Il file non lascia mai il tuo dispositivo, il che conta per contratti, documenti d'identità e referti medici.
Lavoro batch da riga di comando
Per cartelle di PDF o pipeline CI, vince uno strumento a riga di comando. Ottieni output ripetibili, controllo dei DPI e la possibilità di scriptare.
Conversione all'interno di un'applicazione
Quando la conversione fa parte di un prodotto, chiamare una libreria è solitamente più pulito che invocare uno strumento CLI. Elimina una dipendenza esterna e offre una gestione degli errori coerente con il resto della codebase.
Convertire su Windows
Adobe Acrobat
- Apri il PDF e vai alla pagina che ti serve.
- Scegli File > Export to > Image > JPEG/PNG/TIFF.
- Imposta la risoluzione di output nella finestra di esportazione.
- Salva.
Acrobat offre output affidabili, ma non è gratuito e non è scriptabile senza il SDK a pagamento.
PDF-XChange Editor
Un'alternativa più leggera con un piano gratuito. File > Export > Export Pages as Images permette di scegliere formato, DPI e intervallo di pagine.
PowerShell con pdftoppm
Installa Poppler per Windows, quindi usa pdftoppm da PowerShell:
pdftoppm -jpeg -r 300 input.pdf output
Questo produce output-1.jpg, output-2.jpg e così via, una per pagina, a 300 DPI.
Per PNG con sfondi trasparenti:
pdftoppm -png -r 300 input.pdf output
Per una singola pagina:
pdftoppm -jpeg -r 300 -f 1 -l 1 input.pdf output
Le opzioni -f e -l impostano rispettivamente la prima e l'ultima pagina.
PowerShell con ImageMagick
ImageMagick può renderizzare i PDF, ma su Windows di solito delega a Ghostscript in background:
magick -density 300 input.pdf[0] output.jpg
Il [0] indica la prima pagina. Senza di esso, ImageMagick potrebbe tentare di produrre un'immagine multi-frame.
Convertire su macOS
Preview
- Apri il PDF in Preview.
- Seleziona la miniatura della pagina che desideri.
- Scegli File > Export, seleziona il formato e imposta la risoluzione.
Preview è veloce e privato, ma gestisce una pagina alla volta.
Terminale con sips
macOS include sips, ma non renderizza bene il testo dei PDF. Usalo solo per PDF che sono già bitmap:
sips -s format jpeg input.pdf --out output.jpg
Per un rendering PDF serio, installa Poppler tramite Homebrew:
brew install poppler
pdftoppm -jpeg -r 300 input.pdf output
Azione rapida di Automator
Puoi creare un servizio con clic destro in Automator che esegue pdftoppm su qualsiasi PDF selezionato. È utile se converti pagine regolarmente e non vuoi ricordare le opzioni.
Convertire su Linux
Poppler è solitamente la scelta migliore su Linux.
sudo apt install poppler-utils
pdftoppm -jpeg -r 300 input.pdf output
pdftoppm -png -r 300 input.pdf output
Per l'output WebP, converti prima in PNG e poi usa cwebp:
pdftoppm -png -r 300 input.pdf temp
cwebp temp-1.png -o output.webp
Conversione batch
Se hai una cartella di PDF e vuoi un'immagine per la prima pagina di ciascuno:
for f in *.pdf; do
pdftoppm -jpeg -r 300 -f 1 -l 1 "$f" "${f%.pdf}"
done
ImageMagick
ImageMagick funziona su Linux ma è spesso più lento con i PDF perché rasterizza tramite Ghostscript:
magick -density 300 input.pdf[0] -quality 90 output.jpg
Imposta -density prima di leggere il PDF. Metterlo dopo non serve.
Convertire con il codice
TypeScript / Node.js
Usa pdfjs-dist per renderizzare le pagine su un canvas, quindi esporta i dati dell'immagine.
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)
Il valore scale corrisponde approssimativamente ai DPI: una scala di 2 a 72 DPI produce un output a 144 DPI. Per 300 DPI, usa una scala di circa 4.17.
Nel browser, il nostro convertitore PDF in PNG esegue lo stesso passaggio di rendering su canvas senza inviare il file da nessuna parte.
PHP
PHP può invocare pdftoppm dal sistema o usare librerie come spatie/pdf-to-image, che wrappa ImageMagick:
<?php
use Spatie\PdfToImage\Pdf;
$pdf = new Pdf('input.pdf');
$pdf->setPage(1)
->setOutputFormat('png')
->saveImage('output.png');
Se preferisci non aggiungere dipendenze, chiama Poppler direttamente:
<?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);
Questo scrive output-1.png. Aggiungi la tua gestione degli errori prima di usarlo in produzione.
Go
Go non ha un renderer PDF integrato, ma github.com/gen2brain/go-fitz wrappa 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 restituisce le immagini alla risoluzione di rendering predefinita del PDF. Consulta la documentazione della libreria se hai bisogno di controllo sui DPI.
Java
Apache PDFBox è la scelta standard per lavorare con PDF in 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"));
}
}
}
Dipendenza Maven:
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>pdfbox</artifactId>
<version>3.0.2</version>
</dependency>
renderImageWithDPI accetta un indice di pagina base zero e un valore DPI.
Python
Python semplifica le cose 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")
La Matrix controlla la scala. Per ottenere circa 300 DPI da un PDF a 72 DPI, usa fitz.Matrix(300/72, 300/72).
Con pdf2image, che wrappa 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 è comodo ma richiede che Poppler sia installato sul sistema.
Errori comuni
- Dimenticare i DPI. Il rendering PDF predefinito è spesso 72 o 96 DPI. A quella risoluzione il testo appare sfocato. Specifica sempre i DPI di output se la qualità conta.
- Ignorare lo spazio colore. Un PDF CMYK convertito in RGB senza un profilo può apparire sbiadito o troppo saturo.
- Ricodificare PDF scansionati. Se il PDF è già una scansione JPEG, convertirlo in PNG non recupererà i dettagli persi. Renderà solo il file più grande.
- Sostituzione dei font. I server headless a volte non hanno i font incorporati nel PDF. Il renderer li sostituisce e il layout si rompe. Incorporare i font durante la creazione del PDF evita il problema.
- Errore di uno nella numerazione delle pagine. Le API del codice di solito usano indici di pagina base zero. Gli strumenti a riga di comando di solito usano indici base uno.
Cosa usare e dove
- Uso personale sporadico: Preview su macOS, un lettore PDF su Windows o un convertitore nel browser.
- Elaborazione batch su un server:
pdftoppmopdf2image. - All'interno di un prodotto: Apache PDFBox per Java,
pymupdfper Python,pdfjs-distper TypeScript. - File sensibili per la privacy: usa uno strumento basato sul browser così il PDF non lascia mai il dispositivo.
Se vuoi il percorso più veloce senza installare nulla, i nostri convertitori PDF in JPG, PDF in PNG e PDF in WebP girano interamente nel browser.



