LINUX.ORG.RU

ps2pdf и кириллица

 ,


1

1

Пытаюсь сгенерировать PDF с русскими буквами при помощи ps2pdf, однако на выходе все они заменяются на ‘-’:

%!PS
/Times-Bold findfont 36 scalefont setfont
72 684 moveto (Привет, мир!) show
showpage

Что нужно сделать, чтобы работало?

★★★
Ответ на: комментарий от greenman

Okular вроде не переваривает, в остальных не пробовал.

Но для меня это второстепенно, главная цель - получить pdf-ку.

Minoru ★★★
() автор топика
Ответ на: комментарий от Minoru

Не пробовал воспользоваться a2ps или enscript?

Они как раз решают проблему включения шрифта в pdf документ, без чего их не будут показывать обычные просматривальщики pdf.

PS Шрифты лежат на http://www.ibiblio.org/pub/academic/russian-studies/Software/PSfonts/textbook...

vel ★★★★★
()

Всё правильно, PostScript использует восьмибитные кодировки. Старенький он, и заброшен в пользу PDF, к сожалению. По умолчанию кодировочный вектор (таблица соответствия между восьмибитным кодом и именем глифа) кириллицы не содержит. Кодировочный вектор можно взять тут, соответственно твой «Привет, мир!» получается такой:

%!PS
%
% encoding for code page cp1251 (8-bit Russian)
% version 1.0:  - Mainly letters are mapped. The following positions
% (JFi)           are left blank (undefined):
%               -- first 32 positions,
%               -- frame characters,
%               -- a few special characters.

/reencodeCP1251 {
dup dup findfont dup length dict begin
{ 1 index /FID ne { def }{ pop pop } ifelse } forall
currentdict /CharStrings known {
CharStrings /Idieresis known {
/Encoding CP1251Encoding def } if
} if
currentdict end definefont
} def
/CP1251Encoding [
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
/space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quotesingle
/parenleft /parenright /asterisk /plus /comma /minus /period /slash
/zero /one /two /three /four /five /six /seven
/eight /nine /colon /semicolon /less /equal /greater /question
/at /A /B /C /D /E /F /G
/H /I /J /K /L /M /N /O
/P /Q /R /S /T /U /V /W
/X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore
/grave /a /b /c /d /e /f /g
/h /i /j /k /l /m /n /o
/p /q /r /s /t /u /v /w
/x /y /z /braceleft /bar /braceright /asciitilde /.notdef
/afii10051 /afii10052 /quotesinglbase /afii10100 /quotedblbase /ellipsis /dagger /daggerdbl
/Euro /perthousand /afii10058 /guilsinglleft /afii10059 /afii10061 /afii10060 /afii10145
/afii10099 /quoteleft /quoteright /quotedblleft /quotedblright /bullet /endash /emdash
/.notdef /trademark /afii10106 /guilsinglright /afii10107 /afii10109 /afii10108 /afii10193
/space /afii10062 /afii10110 /afii10057 /currency /afii10050 /brokenbar /section
/afii10023 /copyright /afii10053 /guillemotleft /logicalnot /hyphen /registered /afii10056
/degree /plusminus /afii10055 /afii10103 /afii10098 /mu /paragraph /periodcentered
/afii10071 /afii61352 /afii10101 /guillemotright /afii10105 /afii10054 /afii10102 /afii10104
/afii10017 /afii10018 /afii10019 /afii10020 /afii10021 /afii10022 /afii10024 /afii10025
/afii10026 /afii10027 /afii10028 /afii10029 /afii10030 /afii10031 /afii10032 /afii10033
/afii10034 /afii10035 /afii10036 /afii10037 /afii10038 /afii10039 /afii10040 /afii10041
/afii10042 /afii10043 /afii10044 /afii10045 /afii10046 /afii10047 /afii10048 /afii10049
/afii10065 /afii10066 /afii10067 /afii10068 /afii10069 /afii10070 /afii10072 /afii10073
/afii10074 /afii10075 /afii10076 /afii10077 /afii10078 /afii10079 /afii10080 /afii10081
/afii10082 /afii10083 /afii10084 /afii10085 /afii10086 /afii10087 /afii10088 /afii10089
/afii10090 /afii10091 /afii10092 /afii10093 /afii10094 /afii10095 /afii10096 /afii10097
] def

/Times-Bold reencodeCP1251
/Times-Bold findfont 36 scalefont setfont
72 684 moveto (Привет, мир!) show
showpage

И, конечно, файл должен быть в кодировке cp1251, а не в unicode.

JaM
()
Последнее исправление: JaM (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.