2013-07-09 11 views
7

Sto usando GPL Ghostscript 9.07 (2013-02-14) su OS X (10.8.4) per convertire molti PDF in PNG.Forzare Ghostscript per utilizzare l'antialias durante la conversione di un PDF in PNG?

Funziona bene tranne che per uno dei PDF che si trasforma in un PNG con bordi frastagliati. In altre parole, Ghostscript disattiva l'antialiasing per quel particolare PDF per qualche motivo.

The PDF in question.

L'output:

enter image description here

In altri casi funziona bene (campione: pdf ->png).

Io uso questo comando:

gs -dNOPAUSE -dBATCH -dPDFFitPage -sDEVICE=pngalpha -g200x150 -sOutputFile=01.png 01.pdf 

E 'possibile forzare Ghostscript per usare antialiasing per questo PDF?

Qualsiasi consiglio è apprezzato.

+0

Così ho risolto il problema convertendo i file PDF a SVG e utilizzando rsvg (rsvg-convert) per SVG alla conversione PNG. – Dae

risposta

1

Si può provare -dGraphicsAlphaBits = con valori 1,2 o 4 che possono o meno fare la differenza. Ha fatto qualche miglioramento per me, ma è un piccolo grafico a bassa risoluzione con una curva scomoda, quindi non tanto quanto ci si potrebbe aspettare.

Oppure è possibile utilizzare uno dei dispositivi anti-aliasing (ad esempio tiffscaled) che sono più flessibili. Non esiste un dispositivo anti-alias per l'uscita PNG, ma sarebbe banale convertire TIFF in PNG.

A proposito, il file PDF si trasforma specificamente off anti-aliasing sui componenti:

8 0 obj 
<</AntiAlias false/ColorSpace/DeviceCMYK/Coords[0.0 0.0 1.0 0.0]/Domain[0.0 1.0]/Extend[true true]/Function 10 0 R/ShadingType 2>> 

Si potrebbe provare e vedere cosa succede se si cambia AntiAlias ​​al vero, anche se dubito che questo avrà un effetto poichè sono abbastanza sicuro che l'aniti-aliasing sia applicato al rendering interno dell'ombreggiatura, non ai bordi.

+0

1) Nessuna modifica quando ho impostato Antialias su true (dovevo decomprimere e comprimere il file usando pdftk per poterlo modificare). 2) Nessuna modifica per i bordi frastagliati con -dGraphicsAlphaBits = 4 3) Tiffscaled - YES, l'immagine prodotta sembra antialiasata, ma in scala di grigi e lo sfondo è pieno di bianco anziché trasparente (suppongo che sia la limitazione del TIFF). – Dae

+0

Anche PostScript e PDF. Si presume sempre che lo sfondo sia bianco opaco, a meno che non si specifichi qualcos'altro in esso. Non è mai 'trasparente' in questi modelli di imaging.Se leggi il thread per il bug che hai aperto in Bugzilla vedrai perché le altre opzioni non funzioneranno, devi usare uno dei dispositivi "ridimensionati". – KenS

2

Si può provare -dDOINTERPOLATE che utilizza una funzione di filtro Mitchell per scalare i contributi per ogni pixel uscita

+0

Purtroppo non vedo modifiche, ma grazie per il suggerimento. – Dae

+1

-dDOINTERPOLATE riguarda solo le immagini, non influenzerà i dizionari di ombreggiatura, che è ciò che questo file utilizza. – KenS

6

Questo ha funzionato per me:

gs -q -dQUIET -dSAFER -dBATCH -dNOPAUSE -dNOPROMPT -dMaxBitmap=500000000 -dAlignToPixels=0 -dGridFitTT=2 -sDEVICE=jpeg -dTextAlphaBits=4 -dGraphicsAlphaBits=4 -r150 -sOutputFile=foo-%d.jpg foo.pdf 

Fonte: ImageMagick convert pdf to jpeg has poor text quality after upgrading ImageMagick version to 6.7.8

È possibile che questo funzionerebbe per un JPG; per PNG, sostituire l'opzione -sDEVICE con la vostra scelta, ad esempio: -sDEVICE=png16m

Fonte: http://ghostscript.com/doc/current/Devices.htm

+0

La domanda riguardava la conversione da PDF a PNG, non JPEG. – Dae

+0

sì, aggiunto PNG, grazie. –

+0

Vale la pena notare che sono le opzioni '-dTextAlphaBits = 4' e' -dGraphicsAlphaBits = 4' che fanno il lavoro qui. Altre opzioni potrebbero o non essere necessarie a seconda della situazione. –