pdf a jpg senza perdita di qualità; gscan2pdf


51

Quando converto un file pdf in un mucchio di file jpg usando

convert -quality 100 file.pdf page_%04d.jpg

Ho una perdita di qualità apprezzabile.

Tuttavia, se faccio quanto segue, non vi è alcuna (evidente) perdita di qualità:

Avvia gscan2pdf, scegli file-> importa (e scegli file.pdf). Quindi vai alla directory temporanea di gscan2pdf. Esistono molti file pnm (uno per ogni pagina del file pdf). Ora faccio

  for file in *.pnm; do            
  convert $file $file.jpg done

I file jpg risultanti sono (approssimativamente) della stessa qualità del pdf originale (che è quello che voglio).

Ora la mia domanda è: se esiste un modo semplice da riga di comando per convertire il file pdf in un mucchio di file jpg senza una notevole perdita di qualità? (La soluzione sopra è troppo complicata e richiede tempo).


Ciò che non è chiaro nelle tue domande è se parli di testo e grafica vettoriale nel tuo pdf o se intendi estrarre immagini incorporate.
asoundmove,

Risposte:


92

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

(Puoi anteporre -units PixelsPerIncho, -units PixelsPerCentimeterse necessario. La mia copia è impostata su ppi.)

Aggiornamento: Come hai sottolineato, gscan2pdf(il modo in cui lo stai usando) è solo un wrapper per pdfimages(da poppler ). pdfimagesnon 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 può avere bisogno di seguire che con un converta .jpgfase (a seconda di ciò bitmap formattare il PDF è stato utilizzato).

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.


+1 Sono così felice di non essermi sottomesso allo snobismo di aver letto male una delle tue frasi ispirate a me e di aver effettivamente provato i pdfimages - probabilmente il programma più utile che ho usato da mesi! Incoraggerei tutti a provarlo!
ixtmixilix,

@ixtmixilix, sono curioso. Cosa hai letto male e come?
cjm

Abbastanza bello! Risolto il mio giorno Grazie!
Geppettvs D'Constanzo,

convertè inoltre poco pratico per PDF di grandi dimensioni. Ad esempio, sono stati necessari 45 GB di memoria per elaborare un libro di 700 pagine da 6 megapixel. Ci sono voluti anche circa mille volte più a lungo di pdfimages.
Camille Goudeseune,

Per il contrario, converti le immagini in un pdf, o meglio, avvolgi le immagini in un pdf, usa img2pdf, qui: gitlab.mister-muffin.de/josch/img2pdf (avvolge jpg e jpg2000 in un pdf).
erik,

4

Come ha detto la risposta dello studente pdfimagesè una buona opzione. Dalla mia esperienza sia gse convertl'esportazione di scarsa qualità, indipendentemente se si specifica il dpi destra.

Ma se il pdf ha più livelli per pagina pdfimagesnon funziona ed estrae i livelli come immagine separata, in tal caso è meglio usare inskcapeper esportare la pagina come si vede.

Questi sono i comandi che utilizzo:

pdftk combined_to_do.pdf burst output pg_%04d.pdf
ls ./pg*.pdf | xargs -L1 -I {}  inkscape {} -z --export-dpi=300 --export-area-drawing --export-png={}.png

Il primo comando divide tutte le pagine il secondo comando converte pagina per pagina in png. Puoi tenerli png o semplicemente convertirli in jpeg

ls ./p*.png | xargs -L1 -I {} convert {}  -quality 100 -density 300 {}.jpg

Rispetto a pdfimages, gse ImageMagick converttrovo inkscapeche esporti il ​​meglio in termini di qualità.


3

la risposta di @cjm è corretta, ma se ti piace la GUI e non vuoi renderizzare tutte le pagine pdf, solo per ottenere un'immagine, usa gimp.

Apri un pdf con gimp e otterrai una finestra di importazione con tutte le pagine renderizzate. Scegli qualsiasi pagina desideri e imposta la risoluzione su 600 pixel / pollice (ne ho trovati 300 troppo nitidi in molti casi). Salva nel formato desiderato con "File / esporta"

Comunque, ci deve essere una bandiera per selezionare le pagine desiderate dalla riga di comando.


2

Guardando il codice sorgente gscan2pdf ho notato che utilizza pdfimages. Quindi pdfimages file.pdf pagesi tradurrebbe in page-001.ppm, page-002.ppmecc.


pdfimages fa davvero il lavoro
Eduard Florinescu,

2

Ciò che non è chiaro nella tua domanda è se parli di testo e grafica vettoriale nel tuo pdf o se il tuo pdf contiene immagini incorporate.

Dopo aver letto di cosa tratta gscan2pdf, suppongo che i tuoi file pdf contengano (solo) grafica incorporata.

convertessenzialmente "stampa" il tuo pdf senza riguardo per ciò che è il contenuto. Come suggerisce @cjm, potresti voler cambiare la densità di stampa. Questo è l'unico modo per aumentare la qualità della grafica vettoriale.

Se invece, quello che vuoi fare è estrarre immagini incorporate (proprio come gscan2pdf sembra fare), indovinare che la densità di solito porterà a una perdita di qualità o di qualità superiore a quella richiesta (e allo spreco di spazio su disco). La risposta quindi è estrarre l'immagine anziché stampare il pdf. Vedi questo articolo che sostiene sostanzialmente l'uso di pdfimagesal fine di estrarre immagini senza perdita di qualità.

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.