2013-07-22 4 views
3

J'ai une commande ghostscript qui convertit un pdf en plusieurs images PNG (une pour chaque page). Les arguments de commande sont les suivants:Ghostscript: qualité et taille issue

-dNOPAUSE -q -r300 -sPAPERSIZE=a4 -dTextAlphaBits=4 -dGraphicsAlphaBits=4 -dUseTrimBox -sDEVICE=png16m -dBATCH -sOutputFile="C:\outputfile%d.png" -c \"30000000 setvmthreshold\" -f "C:\inputfile.pdf" 

Le PDF se affiche sous forme de pages A4 régulières dans Adobe Reader, mais dans les images PNG, il devient énorme (2480 par 3507 pixels par exemple). Si je change la résolution de la commande ghostscript en -r110 la taille de la page est correcte mais la qualité de l'image est très rastorisée.

Existe-t-il un autre moyen d'améliorer la qualité de l'image sans affecter la taille de l'image?

Merci

Répondre

1

Le compromis qualité-taille est inévitable. Vous pouvez choisir une compression différente pour réduire la taille tout en conservant une qualité raisonnable. Par exemple. DCT (jpeg) ou jpeg2000 si votre contenu se compose principalement d'images photographiques ou CCITT ou JBIG2 si votre contenu est principalement en noir et blanc.

+0

Pourquoi est-ce? Je comprends le concept, mais je veux seulement garder la même taille et la même qualité que le PDF original. Ce n'est pas comme si j'augmente la taille? – hofnarwillie

+0

Ah ... probablement, c'est parce que votre PDF original est constitué de graphiques vectoriels. En général, ils nécessitent peu de stockage par rapport aux données raster qui approchent les graphiques d'origine. –

+0

Non, les documents originaux sont numérisés dans les pages – hofnarwillie

10

Got it! Ajouté le paramètre suivant à ma commande GS:

-dDownScaleFactor=3 

De l'GS documentation:

Cela provoque le facteur de rendu interne à l'échelle par la donnée (petit entier) avant d'être sortie. Par exemple, la suivante produira une sortie 200dpi .png à partir d'un rendu interne 300dpi:

gs -sDEVICE=png16m -r600 -dDownScaleFactor=3 -o tiger.png\ 
     examples/tiger.png 
+0

Il est important de noter que 'dDownScaleFactor' est uniquement pris en charge pour le format PNG, au moins jusqu'à ce que GS 9.18 – maliayas

1

J'ai eu un problème similaire, où la conversion de PDF en PNG en utilisant Ghostscript a donné lieu à une image avec des dimensions beaucoup plus (y compris espace blanc supplémentaire). J'ai résolu le problème en utilisant

-dUseCropBox 

... which sets the page size to the CropBox rather than the MediaBox

+0

l'image réelle est devenue un petit pouce dans le coin inférieur gauche et le reste de l'espace blanc de l'image. – Wolf5

1
  1. trouver la largeur et la hauteur en points (%% BoundingBox)
  2. les utiliser

    gs 
    -sDEVICE=png16m 
    -dDEVICEWIDTHPOINTS=$l 
    -dDEVICEHEIGHTPOINTS=$h 
    -r600 
    -dDownScaleFactor=3 
    -o tiger.png\ 
    examples/tiger.png 
    

$w est la largeur et $h la hauteur