Какие параметры позволят Ghostscript правильно читать названия шрифтов на китайском языке из PDF? - PullRequest
1 голос
/ 11 августа 2010

Я пытался

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

, но я получил ff.вывод из 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²Ó © úÅé) при чтении имени шрифтана китайском Здесь - снимок экрана китайских шрифтов, используемых в списке Adobe Reader 9.

Ответы [ 2 ]

1 голос
/ 11 августа 2010

Интересная проблема.

Однако, здесь не обязательно вина Ghostscript, что вы видите только / · s²Ó © úÅé.

По вашей команде я вижу, что вы использовали Ghostscript в Windows , внутри cmd.exe оболочки. И это cmd.exe, который может не отображать правильно то, что Ghostscript просит отобразить. Это может иметь две разные причины (или обе одновременно)

  1. 'кодовая страница' , используемая вашим окном cmd.exe, не может обрабатывать символы / глифы CID или Unicode.
  2. шрифт, используемый вашим cmd.exe, не содержит и поэтому не может обрабатывать глифы CID / Unicode.

Сначала вы должны запросить ваше окно cmd.exe, которое 'кодовая страница' использует. Тип:

chcp

и посмотрите, может ли это что-нибудь НЕ отображать многобайтовые символы и глифы (например, «кодовая страница 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²Ó © UAE . Но, по крайней мере, вы бы лучше поняли, какой шрифт он хочет заменить. Ваша консоль будет отображать те же азиатские символы, что и на скриншоте Adobe Reader ...; -)

0 голосов
/ 16 августа 2010

Кри Ченг: Я все еще пытаюсь найти решение вашей проблемы с Ghostscript, но у меня еще не было времени провести необходимое исследование ...

Я не знаю, если вы должен по какой-то причине использовать Ghostscript.Но если нет, вот еще один вариант: MuPDF .Предоставлено Artofcode LLC & Artifex Inc. - теми же людьми, которые разрабатывают Ghostscript.

И у MuPDF не возникло никаких проблем при рендеринге файла примера! (Забавно, Ghostscript задушил на странице 2; Acrobat Reader также задохнулся, но предложилчтобы загрузить и установить дополнительный азиатский шрифт, не называя его, а говоря, что «поддерживает традиционный китайский» . После установки Acrobat Reader, однако, не отображает ни одного китайского символа на странице 2.! )

MuPDF:

  • с открытым исходным кодом ;
  • мультиплатформенность (Windows, Mac OS X, Unix, ... скоро возможно Android, iPhone тоже?);
  • очень легкий (см. Скриншоты ниже);
  • очень быстрый;
  • безопасный (без поддержки JavaScript);
  • очень , конечно, не раздутый с функциями;
  • делает отображение всех страниц вашего примера. PDF
  • интерфейс очень прост (только для навигации по клавиатуре, без меню или значков):

MuPDF: very simple GUI -- this is all the GUI it has. MuPDF: keyboard navigation only, no menues or icons.


(Кри Ченг: Интересно, замечаете ли вы также одну маленькую вещь на моих скриншотах, которая была немного удивительной и загадочной для меня ...)

...