Come convertire PDF in immagine?


327

Ho l'obbligo di convertire pagine PDF in immagini. C'è un'immagine di sfondo con un po 'di testo scritto, quindi quando lo salvo come immagine viene salvata solo l'immagine di sfondo.

Esiste un software disponibile per lo stesso in modo che la pagina completa possa essere convertita in immagine?


A quanto pare è possibile anche con inkscape: stackoverflow.com/a/15484727/32453
rogerdpack

Risposte:


299
  1. Installa imagemagick .

  2. Utilizzando un terminale in cui si trova il PDF:

    • Per il documento completo:

      convert -density 150 input.pdf -quality 90 output.png
      
    • Per una singola pagina:

      convert -density 150 input.pdf[666] -quality 90 output.png
      

Per cui:

  • PNG, JPG o (praticamente) qualsiasi altro formato immagine può essere scelto.

  • -density xxximposterà il DPI su xxx(comuni sono 150 e 300).

  • -quality xxximposterà la compressione su xxxper i formati di file PNG, JPG e MIFF (100 significa nessuna compressione).

  • [666]convertirà solo la 667a pagina in PNG (numerazione in base zero così [0]come la 1a pagina).

  • Tutte le altre opzioni (come rifilatura, scala di grigi, ecc.) Possono essere visualizzate sul sito Web di Image Magic .


2
La risposta così com'è funziona ma la risoluzione è molto scarsa. Pertanto al momento non è una risposta utile. Forse se convert ha alcuni parametri che possono essere specificati questo potrebbe cambiare.
Elijah Lynn,

48
Questa risposta è di qualità molto più alta askubuntu.com/a/50180/11929
Elijah Lynn

6
È possibile modificare la densità aggiungendo il -density 300parametro
OHLÁLÁ

4
Qualcuno può confermare che specificare la densità lo rende "buono" come le altre risposte qui, o no? Inoltre, come nota per i follower, ImageMagick chiama "ghostscript" per convertire effettivamente da pdf a png ex: gs -q NOPROMPT ...-sDEVICE=pngalpha -r150x150 -sOutputFile=/var/tmp/Yf%d -f/var/tmp/L -f/var/tmp/Fic1e se lo ottieni convert: no images defined output.pngsignifica che non hai ghostscript installato ...
rogerdpack

4
L'analisi del PDF in imagemagick è stata disabilitata - bugs.archlinux.org/task/59778 - può essere abilitata manualmente modificando il /etc/ImageMagick-7/policy.xmlfile e rimuovendolo PDFda<policy domain="coder" rights="none" pattern="{PS,PS2,PS3,EPS,PDF,XPS}" />
Jezor il

393

Puoi usare pdftoppmper convertire un PDF in un PNG:

pdftoppm input.pdf outputname -png

Questo produrrà ogni pagina nel PDF usando il formato outputname-01.png, con 01l'indice della pagina.

Conversione di una singola pagina del PDF

pdftoppm input.pdf outputname -png -f {page} -singlefile

Passa {page}al numero di pagina. È indicizzato a 1, quindi -f 1sarebbe la prima pagina.

Specifica della risoluzione dell'immagine convertita

La risoluzione predefinita per questo comando è 150 DPI. Aumentandolo si avrà una dimensione del file maggiore e maggiori dettagli.

Per aumentare la risoluzione del PDF convertito, aggiungere le opzioni -rx {resolution}e -ry {resolution}. Per esempio:

pdftoppm input.pdf outputname -png -rx 300 -ry 300

24
Grazie mille. Qualità molto migliore rispetto a imagemagick o graphicsmagick!
dAnjou,

7
pdftoppm è molto più veloce di convert
zuo

4
Questo è davvero molto meglio di imagemagick. Imagemagick in realtà ha cambiato i colori in modo inaspettato nel mio caso!
NoBackingDown

13
questo è buono !, ma è un po 'più facile da scrivere -r 300invece di specificare le risoluzioni xey in modo indipendente quando si desidera impostarle sullo stesso valore.
mlc,

2
Ho avuto molto più successo con pdftoppm che con imagemagick.
Michael Hays,

22

IIRC GIMP è in grado di utilizzare PDF, ovvero convertirli in immagini. Quindi, se vuoi modificare le immagini immediatamente, GIMP è tuo amico.


GIMP può infatti aprire PDF, ogni pagina come un livello. La scelta di "Esporta come" sembra salvare solo il livello corrente, ma è possibile eliminare facilmente il livello dopo l'esportazione ed eseguire nuovamente "Esporta come".
Dan Dascalescu, il

12

La risposta attualmente accettata fa il lavoro, ma si traduce in un output di dimensioni maggiori e che soffre di perdita di qualità.

Il metodo nella risposta fornita qui produce un output di dimensioni comparabili all'input e che non soffre di perdita di qualità.

TLDR - Utilizzare pdfimages:pdfimages -j input.pdf output

Citando la risposta collegata:

Non è chiaro cosa intendi per "perdita di qualità". Ciò potrebbe significare molte cose diverse. Potresti pubblicare alcuni esempi per illustrare? Forse tagliare la stessa sezione dalla scarsa qualità e versioni di buona qualità (come un PNG per evitare ulteriori perdite di qualità).

Forse devi usare -densityper fare la conversione con un dpi più alto:

convert -density 300 file.pdf page_%04d.jpg

(È possibile anteporre -units PixelsPerIncho, -units PixelsPerCentimeterse necessario. La mia copia predefinita è ppi.)

Aggiornamento: Come hai sottolineato, gscan2pdf(il modo in cui lo stai usando) è solo un wrapper per pdfimages(da poppler ). pdfimages non fa la stessa cosa che convertsuccede quando viene dato un PDF come input.

convert prende il PDF, lo rende ad una certa risoluzione e usa l'immagine bitmap risultante come immagine sorgente.

pdfimagescerca nel PDF le immagini bitmap incorporate ed esporta ognuna in un file. Ignora semplicemente qualsiasi comando di testo o disegno vettoriale nel PDF.

Di conseguenza, se quello che hai è un PDF che è solo un wrapper attorno a una serie di bitmap, pdfimagesfarà un lavoro molto migliore di estrarli, perché ti dà i dati grezzi alla sua dimensione originale. Probabilmente vuoi anche usare l' -jopzione pdfimages, perché un PDF può contenere dati JPEG non elaborati. Per impostazione predefinita, pdfimagesconverte tutto in formato PNM e la conversione di JPEG> PPM> JPEG è un processo con perdita di dati.

Allora prova

pdfimages -j file.pdf page

Si può o non essere necessario seguire che con un converta .jpgun passo (a seconda di cosa formato bitmap il PDF stava usando).

Ho provato questo comando su un PDF creato da una sequenza di immagini JPEG. I JPEG estratti erano byte per byte identici alle immagini di origine. Non puoi ottenere una qualità superiore a quella.


8

Se i tuoi PDF vengono scansionati, le immagini sono già memorizzate come parte del pdf. dovrai semplicemente estrarli con pdfimages:

pdfimages my-file.pdf prefix 

2
Questa è la soluzione perfetta per i PDF scansionati, poiché con questo è possibile, con un comando, estrarre i jpg originali e senza ulteriori ricompressioni.
Jose Gómez,

3

Per ottenere una singola pagina da gm convert, aggiungi [N] (con N il numero di pagina che inizia da 0) al nome del PDF, cioè gm convert foo.pdf[11] out.pngper ottenere la dodicesima pagina dal PDF.

Per l' pdftoppmuso -f N -singlefile, dove N è il numero di pagina che inizia da 1, vale pdftoppm -f 12 -singlefile foo.pdf outa dire per lo stesso risultato. Sembra aggiungere sempre ".png" al nome del file di output e non c'è modo di fermarlo.


2

Puoi usare convert e specificare una densità maggiore usando l' -densityopzione.

per esempio. convert -d 300 foo.pdf bar.png


puoi spiegare di più su cos'è la densità e cosa può fare?
rʒɑdʒɑ

1
@AgentCool Specifica la densità dell'immagine orizzontale e verticale (in ppi).
Arjun,

2

Se desideri convertire solo una pagina specifica di un PDF in un PNG, puoi eseguire il pipe pdftkin convert( descritto sopra ) in questo modo:

pdftk document.pdf cat 12 output - | convert - document-page-12.png

1

Master PDF Editor (versione 2.2) ha questa opzione integrata. Apri il file PDF e vai su File> Esporta in> Immagini. Presenta una finestra di dialogo in cui è possibile definire diverse opzioni per l'output. Estremamente utile. Spero che queste informazioni siano d'aiuto.


È nella versione gratuita o a pagamento? Nella mia versione, l'opzione è disattivata? Significa che devo pagare? Esiste una versione a pagamento?
Joshua Robison,

0

PDF Mod consente anche di esportare immagini di tutte o singole pagine di file PDF.

  • Apri il file PDF in PDF Mod
  • Seleziona pagina / e -
  • Modifica> Esporta immagini
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.