Usando Ghostscript per convertire PDF multipagina in un singolo JPG?


15

So che Ghostscript può convertire i PDF in JPG e, nel caso di un PDF multipagina, può strappare ogni pagina in un singolo JPG. Ma è possibile farlo strappare a un JPG, in modo che le pagine vengano incollate una sotto l'altra, ad esempio la metà superiore del JPG è la pagina 1, la metà inferiore è la pagina 2? O devo usare un altro programma (e ImageMagick può farlo?) Per combinare le pagine JPG in un'immagine?

Risposte:


17

Sì, dovrai convertire ogni pagina PDF in un singolo file JPG (Ghostscript può farlo).

Quindi unisci i file JPG risultanti usando un altro programma ( ImageMagick o GraphicsMagic possono farlo usando i loro montagesotto-comandi).

Non sono a conoscenza di alcun software in grado di farlo in una volta sola.

Conversione da PDF a JPG (con Ghostscript): ti consigliamo di assicurarti di ottenere il miglior risultato possibile. Quindi assicurati di modificare le opzioni della riga di comando in modo che funzionino per te. I 'd iniziare con questo:

gswin32c.exe ^
    -dBATCH ^
    -dNOPAUSE ^
    -dSAFER ^
    -sDEVICE=jpeg ^
    -dJPEGQ=95 ^
    -r600x600 ^
    -sOutputFile=c:/path/to/jpeg-dir/pdffile-%03d.jpeg ^
    c:/path/to/pdffile.pdf

Questo creerà JPG chiamati pdffile-001.jpeg , pdffile-002.jpg ecc. Il parametro * -dJPEGQ = 95 "imposta" Qualità JPEG "al 95%. Utilizza una risoluzione di" 600x600 dpi ". Potrebbe essere necessario controlla le dimensioni della pagina dei JPG risultanti nel caso in cui il valore predefinito di Ghostscript non soddisfi le tue esigenze:

gswin32c.exe ^
    -dBATCH ^
    -dNOPAUSE ^
    -dSAFER ^
    -sDEVICE=jpeg ^
    -dJPEGQ=95 ^
    -r600x600 ^
    -dPDFFitPage ^
    -dFIXEDMEDIA ^
    -dDEVICEWIDTHPOINTS=800 ^
    -dDEVICEHEIGHTPOINTS=600 ^
    -sOutputFile=c:/path/to/jpeg-dir/pdffile-%03d.jpeg ^
    c:/path/to/pdffile.pdf

o

gswin32c.exe ^
    -dBATCH ^
    -dNOPAUSE ^
    -dSAFER ^
    -sDEVICE=jpeg ^
    -dJPEGQ=95 ^
    -r600x600 ^
    -dPDFFitPage ^
    -dFIXEDMEDIA ^
    -sDEFAULTPAPERSIZE=a4 ^
    -sOutputFile=c:/path/to/jpeg-dir/pdffile-%03d.jpeg ^
    c:/path/to/pdffile.pdf

cucitura multiplo-singolo-JPG con montage(ImageMagick o GraphicsMagick): ilmontagecomando (utilizzato in questo esempio è ImageMagick) consente di controllare il motivo di piastrellatura. Se usi ad esempio-tile 4x3otterrai questo layout di imposizione:

1  2  3  4    
5  6  7  8    
9 10 11 12    

È possibile utilizzare questo comando per unire 12 singoli JPG in uno:

montage ^
    -border 0  ^
    -tile 4x3  ^
    c:/path/to/jpeg-dir/pdffile-*.jpeg  ^
    c:/path/to/final.jpg

Naturalmente, montageha molte dozzine di parametri aggiuntivi che consentono di determinare lo sfondo, la spaziatura, gli offset, la decorazione, le etichette, la rotazione, il ritaglio, la didascalia ecc. Per l'input e il JPG risultante.


EDIT: (Avrei voluto dare questo suggerimento già nella mia risposta originale, ma ho dimenticato.) Dimontagedefault userò le dimensioni delle tessere di 120x120 pixel. Se si desidera mantenere le dimensioni della pagina originale per ogni riquadro, è necessario aggiungere-geometryalla riga di comando. Supponendo di averepagine A4 (= 595x852 pt) nel tuo PDF e desideri mantenerlo, ma aggiungi anche una spaziatura di 11 pt all'orizzontale e 22 pt alla direzione verticale della piastrellatura (oltre a 4 linee di bordo / cornice grigie forti attorno a ciascuna tessera), procedere come segue:

montage ^
    -border 4 ^
    -tile 4x3 ^
    -geometry 595x842+11+22 ^
    c:/path/to/jpeg-dir/pdffile-*.jpeg ^
    c:/path/to/final.jpg

MODIFICA 2: (Mancava ancora un altro suggerimento importante.) Se non vuoi perdere la buona qualità dell'immagine durante il processo di cucitura / montaggio, che la tua conversione da PDF a JPG aveva creato, quindi aggiungi anche il-quality 100parametro alla tua riga di comando in questo modo :

montage ^
    -border 4 ^
    -tile 4x3 ^
    -geometry 595x842+11+22 ^
    -quality 100 ^
    c:/path/to/jpeg-dir/pdffile-*.jpeg ^
    c:/path/to/final.jpg

La ringrazio per la risposta. Non vedo i parametri geometrici in ImageMagick 6.9.9. Inoltre, la qualità dell'immagine dell'immagine combinata è ancora scadente, letteralmente non riesco a leggere una parola da essa.
Geek

2

Poiché ImageMagick ha il supporto per GhostScript integrato, puoi fare tutto in una volta sola:

montage -tile 5 thispdfis25pages.pdf tiledoverview.jpg

che prenderà ogni pagina e ne creerà un lungo jpeg end-to-end.


1
Ma questo NON ti darà JPG di alta qualità, perché userà Ghostscript con le sue impostazioni predefinite (e questi sono abbastanza shi..y per l'output JPG). Farlo in 2 passaggi (e controllare prima le pagine JPG) ti dà un controllo ottimale e ti dà anche un output JPG piuttosto buono).
Kurt Pfeifle,

È possibile modificare le impostazioni di Ghostscript utilizzando l'impostazione di densità di ImageMagick per il PDF e ottenere risultati altrettanto buoni. Non bussare alla messaggistica istantanea se non sei a conoscenza di come utilizzare le sue opzioni.
Erjiang,

1
k .: Ehi, non ho bussato a ImageMagick. E so come usare le sue opzioni, anche con l'applicazione dei profili colore ICC ... Ma non è possibile passare tutte le opzioni di Ghostscript al montaggio. Il mio commento si riferiva al comando suggerito, che non menzionava -density.
Kurt Pfeifle,

Per inciso, ho letto altrove su SO che ImageMagick converte internamente da PDF a PS e quindi da PS a PNG quando lo invochi in questo modo, quindi è un altro motivo per non farlo in questo modo (due conversioni => qualità inferiore e più lento).
Ibrahim,
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.