Ghostscript无法很好地呈现pdf中的嵌入字体(所有锯齿状)

问题描述 投票:3回答:2

Ghostscript无法正确呈现pdf中的嵌入字体。例如http://vegro.nl/cmsfiles/ConsumentenAssortiment/Brochure/10.axd右上角的徽标字符(“ Thermrad”)均呈锯齿状。如果我在Adobe Reader中打开文件,则完全没有问题!

您也有这个问题吗?有什么解决办法吗?我一直在搜索几天,但找不到任何东西。

我在Windows Vista和CentOS上都尝试了Ghostscript 8.64和8.71。

pdf rendering ghostscript
2个回答
3
投票

我的建议是使用Ghostscript 8.71。然后使用此命令行:

  gswin32c.exe ^
      -sDEVICE=pdfwrite ^
      -o thermrad-out.pdf ^
      -dPDFSETTINGS=/printer ^
      10.axd

这应该完成将PDF转换成不再有问题的工作。因为原始.axd文件的嵌入字体确实有问题。 (我正在使用XPDF套件中的pdffonts.exe进行检查)。该问题出现在您的10.axd的第3页上:

 for /l %i in (1,1,16) do (
       echo.   ............ Page %i ............................... ^
       & pdffonts.exe -f %i -l %i 10.axd ^
       & echo.)

输出此:

  [....]
        ............ Page 3 ...............................
  name                                 type              emb sub uni object ID
  ------------------------------------ ----------------- --- --- --- ---------
  YCRHYF+HelveticaNeue-LightExt        Type 1C           yes yes yes    249  0
  XCZBKH+HelveticaNeue-Light           Type 1C           yes yes yes    250  0
  Error: Illegal entry in bfchar block in ToUnicode CMap
  YCRHYF+HelveticaNeue-LightExt        Type 1C           yes yes yes     15  0
  Error: Illegal entry in bfchar block in ToUnicode CMap
  YCRHYF+HelveticaNeue-LightExt        Type 1C           yes yes yes     19  0
  Error: Illegal entry in bfchar block in ToUnicode CMap
  YCRHYF+HelveticaNeue-LightExt        Type 1C           yes yes yes     41  0
  Error: Illegal entry in bfchar block in ToUnicode CMap
  YCRHYF+HelveticaNeue-LightExt        Type 1C           yes yes yes     45  0
  Error: Illegal entry in bfchar block in ToUnicode CMap
  YCRHYF+HelveticaNeue-LightExt        Type 1C           yes yes yes     49  0
  Error: Illegal entry in bfchar block in ToUnicode CMap
  YCRHYF+HelveticaNeue-LightExt        Type 1C           yes yes yes     53  0
  Error: Illegal entry in bfchar block in ToUnicode CMap
  YCRHYF+HelveticaNeue-LightExt        Type 1C           yes yes yes     57  0
  Error: Illegal entry in bfchar block in ToUnicode CMap
  YCRHYF+HelveticaNeue-LightExt        Type 1C           yes yes yes     61  0
  [....]

在我让Ghostscript对其进行修复之后,已修复的PDF页面3的问题消失了:

 c:\> pdffonts.exe -f 3 -l 3 thermrad.pdf

   name                                 type              emb sub uni object ID
   ------------------------------------ ----------------- --- --- --- ---------
   CZBBTM+HelveticaNeue-LightExt        Type 1C           yes yes no      13  0
   MXETZY+HelveticaNeue-Light           Type 1C           yes yes no      40  0

0
投票

将PDF转换为JPG时,为我们提供平滑字体渲染的方法是使用-dGraphicsAlphaBits=4 -dTextAlphaBits=4打开文本抗锯齿功能。

这是Windows批处理文件,我用来转换为通过命令行传递的page size。样本调用:pdf2jpg infile.pdf 11x17

gswin64c.exe ^
-dNOPAUSE -P- -dSAFER -dBATCH ^
-dGraphicsAlphaBits=4 ^
-dTextAlphaBits=4 ^
-sDEVICE=jpeg ^
-dJPEGQ=85 ^
-r300x300 ^
-sPAGESIZE=%2^
-sOutputFile=%~n1.jpg ^
%1

此外,在某些gs版本中,如果存在透明图像,则至少还有一个known issue,字体抗锯齿功能会自动关闭。 Convert a PDF to a Transparent PNG with GhostScript有解决方案。

© www.soinside.com 2019 - 2024. All rights reserved.