3

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

你也有这个问题吗?有什么解决办法吗?我已经搜索了好几天,但我找不到任何东西。

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

4

2 回答 2

3

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

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

那应该可以将PDF转换为不再有问题的PDF。因为原始 .axd 文件确实存在嵌入字体的问题。(我正在使用pdffonts.exeXPDF 套件进行检查)。问题出现在 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
于 2010-08-16T20:37:55.770 回答
0

在将 PDF 转换为 JPG 时为我们提供平滑字体渲染的解决方法是使用-dGraphicsAlphaBits=4 -dTextAlphaBits=4.

这是我用来转换为通过命令行传递的页面大小的 Windows 批处理文件。示例调用: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 版本中会自动关闭字体抗锯齿功能,这至少存在一个已知问题。使用 GhostScript 将 PDF 转换为透明 PNG有一个解决方案。

于 2012-12-18T21:29:00.783 回答