1

我试过了

gswin32c -sDEVICE=jpeg -sOutputFile=foo.jpg foo.pdf

但我明白了。在使用中文字体的页面上从 Ghostscript 输出。

Substituting CID font resource/Adobe-CNS1 for /·s²Ó©úÅé.
Error: /undefinedresource in --findresource--
Operand stack:
   --dict:4/4(L)--   F3   12.96   --dict:6/6(L)--   --dict:6/6(L)--   ·s²Ó©úÅé --dict:9/12(ro)(G)--   --nostringval--   --dict:8/8(L)--   --dict:8/8(L)--   Adobe-CNS1   CIDFont   Adobe-CNS1
Execution stack:
   %interp_exit   .runexec2   --nostringval--   --nostringval--   --nostringval--   2   %stopped_push   --nostringval--   --nostringval--   --nostringval--   false   1   %stopped_push   1   3   %oparray_pop   1   3   %oparray_pop   1   3   %oparray_pop   --nostringval--   --nostringval--   3   1   33   --nostringval--  %for_pos_int_continue   --nostringval--   --nostringval--   --nostringval--   --nostringval--   %array_continue   --nostringval--   false   1   %stopped_push  --nostringval--   %loop_continue   --nostringval--   --nostringval--   --nostringval--   --nostringval--   --nostringval--   --nostringval--   %array_continue   --nostringval--   --nostringval--   --nostringval--   --nostringval--   --nostringval--   %loop_continue   --nostringval--   12   9   %oparray_pop   --nostringval--   --nostringval--   --nostringval--
Dictionary stack:
   --dict:1122/1686(ro)(G)--   --dict:2/20(G)--   --dict:75/200(L)--   --dict:75/200(L)--   --dict:105/127(ro)(G)--   --dict:253/347(ro)(G)--   --dict:21/24(L)--   --dict:4/6(L)--   --dict:26/31(L)--   --dict:20/26(ro)(G)--
Current allocation mode is local
Last OS error: No such file or directory
GPL Ghostscript 8.54: Unrecoverable error, exit code 1

很明显,Ghostscript的编码是非Unicode的,因为它在读取中文字体名称时会出现垃圾(/·s²Ó©úÅé)。 是 Adob​​e Reader 9 列出的中文字体的屏幕截图。

4

2 回答 2

1

有趣的问题。

但是,这里不一定是 Ghostscript 的错,您只看到 /·s²Ó©úÅé。

从您的命令中,我看到您在shell窗口中在Windows上使用 Ghostscript。cmd.execmd.exe可能无法正确显示 Ghostscript 要求它显示的内容。这可能有两个不同的原因(或同时有两个原因)

  1. 您的 cmd.exe 窗口使用的“代码页”无法处理 CID 或 Unicode 字符/字形。
  2. 您的 cmd.exe 使用的字体不包含因此无法处理 CID/Unicode 字形。

您应该cmd.exe首先查询您的窗口,它使用哪个“代码页”。类型:

chcp

看看它是否是不能显示多字节字符和字形的东西(比如“codepage 850”)。

如果是这样,请尝试使用以下命令更改当前 cmd.exe 窗口中的代码页:

chcp 65001

或者

chcp 65000

这应该将您切换到 Unicode ( 65001 == UTF-8-Unicode ; 65000 == UTF-7-Unicode )。如果你这样做了,你还必须确保在你的 cmd.exe 窗口中使用的字体可以显示所有(大部分)有问题的字形:因此你应该进入 cmd.exe 窗口的设置(点击顶部窗口标题栏的左角图标)并将字体更改为'Lucida Console'

以下是一些可能对您有所帮助的代码页编号:

932 :  Japanese Shift-JIS
936 :  Simplified Chinese GBK
949 :  Korean
950 :  Traditional Chinese Big5

但请注意,您可能无法切换到这些代码页,除非您的计算机安装了日文/中文/韩文支持。

另请参阅此处:


说了这么多,这可能仍然不能解决你的问题。Ghostscript 可能仍会显示相同的错误,因为它没有找到要使用的字体(CID 字体资源/Adobe-CNS1)来代替·s²Ó©úÅé。但至少你会更好地理解它想要替换哪种字体。您的控制台将显示与您的 Adob​​e Reader 屏幕截图相同的亚洲字形... ;-)

于 2010-08-11T16:04:08.687 回答
0

Chry Cheng:我仍在尝试为您的 Ghostscript 问题找到解决方案,但我还没有时间进行所需的研究......

我不知道您是否出于某种原因必须使用 Ghostscript。但如果没有,这里有另一种选择:MuPDF。由 artofcode LLC 和 Artifex Inc. 提供给您——开发 Ghostscript 的人。

MuPDF 对我渲染您的示例文件没有任何问题! (有趣的是,Ghostscript 在第 2 页卡住了;Acrobat Reader 也卡住了,但提供下载和安装额外的亚洲字体,但没有命名,而是说“支持繁体中文”安装后,Acrobat Reader 却不显示第 2 页上的一个中文字形!

穆PDF:

  • 开源
  • 多平台(Windows、Mac OS X、Unix、...很快可能是 Android、iPhone?);
  • 非常轻巧(见下面的截图);
  • 非常快;
  • 安全(不支持 JavaScript);
  • 非常肯定不会因功能而臃肿;
  • 确实显示您的示例 PDF 的所有页面
  • 界面非常简单(只有键盘导航,没有菜单或图标):

MuPDF:非常简单的 GUI——这就是它所拥有的所有 GUI。 MuPDF:仅键盘导航,没有菜单或图标。


(Chry Cheng:不知道你有没有注意到我截图中的一件小事,让我有点惊讶和神秘……)

于 2010-08-16T00:14:16.260 回答