2009-07-09 3 views
2

Nous avons un grand nombre de fichiers PDF prêts à l'impression que nous souhaitons sous-échantillonner à une taille plus petite et qui conviennent aux téléchargements en ligne. J'utilise Ghostscript comme ceci:GhostScript supprime l'image lorsque ColorConversionStrategy est défini sur sRGB

"C:\Program Files\gs\gs8.64\bin\gswin32c.exe"^
-q^
-dNOPAUSE^
-dBATCH^
-dSAFER^
-dPDFSETTINGS=/screen^
-sDEVICE=pdfwrite^
-sOutputFile="c:\gs_out.pdf" 
-f "c:\6916_DE.pdf" 

Le problème est que Ghostscript ne parvient pas à convertir une image quand je vais ouvrir le fichier PDF résultant Adobe Reader me met en garde contre une éventuelle erreur dans le fichier. Si je change le paramètre PDFSETTINGS à /print la sortie fonctionne mais la taille du fichier n'est pas réduite. J'ai lu le fichier d'aide pour ps2pdf et j'ai trouvé un paramètre critique, ColorConversionStrategy. Lorsque ColorConversionStrategy est défini sur sRGB l'image sera supprimée, lorsqu'elle est définie sur UseDeviceIndependentColor, qui est la valeur par défaut pour le paramètre /print, l'image est toujours présente mais la taille du fichier n'est pas réduite.

L'image est transparente, ce qui pourrait également être un facteur.

Vous avez des idées?

Répondre

2

D'abord, je vous suggère de mettre à jour votre Ghostscript à la dernière version, qui est v8.71. Beaucoup de problèmes concernant le traitement PDF ont été corrigés depuis 8.64 (que vous semblez utiliser).

Deuxième, si vous utilisez -dPDFSETTINGS=/screen sur votre commandline, cela est implicitement aussi:
-dColorConversionStrategy=/sRGB et
-dColorImageResolution=72.
Mais -dPDFSETTINGS=/printer utilise implicitement:
-dColorConversionStrategy=/UseDeviceIndependentColor ainsi que
-dColorImageResolution=300.

Si votre objectif principal est de réduire la taille de l'image, essayez ceci:

gswin32c.exe^
    -o c:\gs_out.pdf^
    -sDEVICE=pdfwrite^
    -dPDFSETTINGS=/screen^
    -c ".setpdfwrite"^
    -c "<</ColorConversionStrategy /LeaveColorUnchanged>> setdistillerparams"^
    -c "<</ColorImageDownsampleType /Bicubic>> setdistillerparams"^
    -f "c:\6916_DE.pdf" 

Vous continuez à utiliser /screen (et celui-ci vous impliquez -dColorImageResolution=72).

Toutefois, les deux paramètres -c remplacent deux autres paramètres implicites /screen. Cela pourrait peut-être surmonter votre problème.