LINUX.ORG.RU
ФорумAdmin

проблема с ghostscript - перестал понимать по-русски


0

0

Короче проблема такая - есть 2 машины, на одоной из них стоит принтер под CUPS. Печать шла на ура, но в один прекрасный день без всякой видимой причины вместо русского тейста стал выдавать чистый лист - только знаки препинания и видны. ИМХО проблема в ghostscript, поскольку печатъ в файл затем нормально отображается (gv file.ps) на клиентской машине. Однако тот же файл на сервере не выводится нормально по gs - опять я вижу только знаки препинания из текста. /usr/share/fonts/default/ghostscript/Fontmap ошибочно указывал куда-то на
../../../ghostscript/5.50/Fontmap.GS , но исправление ничего не дало.
Кто нибудь с такими граблями сталкивался?
Лечить-то как?

О больном:
-------------------------------------------------------------------
[bit@server bit]$cat /etc/issue
Mandrake Linux release 8.1 (Vitamin) for i586
Kernel 2.4.8-26mdk on an i586
[bit@server bit]$ uname -a
Linux server.nodomain 2.4.8-26mdk #1 Sun Sep 23 17:06:39 CEST 2001 i586 unknown
[bit@server bit]$ rpm -qa|grep ghost
ghostscript-fonts-5.50-6mdk
ghostscript-6.51-24mdk
ghostscript-module-X-6.51-24mdk
[bit@server bit]$
-------------------------------------------------------------------

Заранее благодарен


Проблема в приложении (Mozilla, угадал?), которое в нарушение спецификации Adobe пользуется в PostScript кириллическими шрифтами, но не внедряет их в документ. Так что теперешняя "неработоспособность" ghostscript - на самом деле правильное состояние дел. Попробуйте послать документ на настоящий PostScript принтер (без ps2ps) и убедитесь.

Теперь о том противном хаке, работоспособность которого недавно была нарушена.

Пакет с доделанными шрифтами в RedHat назывался URW-fonts, не знаю как в Mandrake. Переустановка может помочь. Если не найдете - эти шрифты на самом деле (как следует из spec-файла) взяты со следующего адреса:

ftp://ftp.gnome.ru/fonts/urw/release/urw-fonts-1.0.7.pre22.tar.bz2

Для a2ps нужны свои шрифты, чтобы вывод этой программы соответствовал спецификации:

ftp://ftp.enst.fr/pub/unix/a2ps/i18n-fonts-0.1.tar.gz

anonymous
()

Нет, неугадал. В смысле что только мозилла. Вот пример - есть у меня некий файл в кодировке кои8. Вот что я с ним делаю:
------------------------------------------------------------------
[bit@server bit]$ locale
LANG=ru_RU.KOI8-R
LC_CTYPE=en_US
LC_NUMERIC=en_US
LC_TIME=en_US
LC_COLLATE=en_US
LC_MONETARY=en_US
LC_MESSAGES=en_US
LC_PAPER="ru_RU.KOI8-R"
LC_NAME="ru_RU.KOI8-R"
LC_ADDRESS="ru_RU.KOI8-R"
LC_TELEPHONE="ru_RU.KOI8-R"
LC_MEASUREMENT="ru_RU.KOI8-R"
LC_IDENTIFICATION="ru_RU.KOI8-R"
LC_ALL=
[bit@server bit]$ LANG=ru_RU.UTF
[bit@server bit]$ head /Apps/html/harry6.txt
Джоанна Роулинг

ГАРРИ ПОТТЕР И ОРДЕН ФЕНИКСА

ЧАСТЬ 1

Об электронной версии 5-й книги о Гарри Потере

Текст романа "Гарри Поттер и Орден Феникса" предназначен исключительно
для частного некоммерческого использования.
[bit@server bit]$ head /Apps/html/harry6.txt |mpage -b A4 -1 |gv -

------------------------------------------------------------------
Последняя команда запускает смотрелку в которой в кодировке латин-1
äÖÏÁÎÎÁ òÏÕÌÉÎÇ

çáòòé ðïôôåò é ïòäåî æåîéëóá

þáóôø 1

ï ÜÌÅËÔÒÏÎ ÎÏÊ ×ÅÒÓÉÉ 5-Ê ËÎÉÇÉ Ï çÁÒÒÉ ðÏÔÅÒÅ

ôÅËÓÔ ÒÏÍÁÎÁ "çÁÒÒÉ ðÏÔÔÅÒ É ïÒÄÅÎ æÅÎÉËÓÁ" ÐÒÅÄÎÁÚÎ ÁÞÅÎ ÉÓËÌÀÞÉÔ ÅÌØÎÏ
ÄÌÑ ÞÁÓÔÎÏÇÏ ÎÅËÏÍÍÅÒ ÞÅÓËÏÇÏ ÉÓÐÏÌØÚÏ ×ÁÎÉÑ.

ðÅÒÅ×ÏÄ ÒÏÍÁÎÁ ÏÓÕÝÅÓÔ× ÌÑÅÔÓÑ ËÏÍÁÎÄÏÊ Harry Potter Club-Á:

äÁÎÎÁÑ ×ÅÒÓÉÑ ÎÅ Ñ×ÌÑÅÔÓÑ ÏËÏÎÞÁÔÅ ÌØÎÏÊ É ÓÏÄÅÒÖÉÔ ÎÅËÏÔÏÒÏ Å
ËÏÌÉÞÅÓÔ ×Ï ÎÅÔÏÞÎÏÓ ÔÅÊ É ÏÛÉÂÏË, ËÏÔÏÒÙÅ ÓÏ ×ÒÅÍÅÎÅÍ ÂÕÄÕÔ ÉÓÐÒÁ×ÌÅ ÎÙ.
ïÄÎÁËÏ ÄÌÑ ÏÚÎÁËÏÍÌ ÅÎÉÑ Ó ÒÏÍÁÎÏÍ ÜÔÏÇÏ ×ÐÏÌÎÅ ÄÏÓÔÁÔÏÞ ÎÏ.



(т.е.абракадабра) появляется то же. Почему-то смотрелка "видит" этот постскрипт как леттер а не А4, при попытке смены листа выдаёт следующее.
------------------------------------------------------------------
Error: /typecheckGNU Ghostscript 6.51: Unrecoverable error, exit code 1
in --closefile--
Operand stack:
--nostringval-- ()
Execution stack:
%interp_exit .runexec2 --nostringval-- --nostringval-- --nostringval-- 2 %stopped_push --nostringval-- --nostringval-- --nostringval-- false 1 %stopped_push 1 3 %oparray_pop --nostringval-- --nostringval--
Dictionary stack:
--dict:1027/1476(ro)(G)-- --dict:0/20(G)-- --dict:83/200(L)--
Current allocation mode is local
------------------------------------------------------------------

Вообще-то я в вопросах постскрипта полный ламмер, могли бы вы мне объяснить/тыкнуть что к чему?

Заранее благодарен

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

da neprichem zdes' mpage - problema v samom ghostscript. te zhe grabli i s konqueror i s mozilla i s mpage. Tut chego-to s fontami dlja pechati - no vot chto? I eshe para voprosov -
1. mogu li / prosto perenesti faily s rabochej mashin? Esli da to kakie fajly otvechajut za nastrojku ghostscript?
2 chto takoe a2ps + psnup? filtr dlja printera? prosto zamena mpage? Kak etim pol'zovat'sja?

bit
() автор топика

Нет, проблема не в ghostscript. Еще раз говорю, что то, что генерируют Mozilla и mpage, на настоящем PostScript принтере командой cat file.ps >/dev/lp0 не распечатается. Найдите знакомого с HP LJ 1200 (или сами купите - всего 12 тыс. руб.) и убедитесь. Добавление кириллических шрифтов в ghostscript - это очень грязный прием для обхода одинаковых багов в других программах. Более того, при сборке ghostscript из официальных исходников с gnu.org никаких кириллических шрифтов там нет.

А то, что на одни и те же грабли наступают разработчики многих программ, свидетельствует только о порочности подхода Adobe к проблеме принтерных шрифтов. Adobe разрешает не внедрять перечисленные ей "стандартные" шрифты в кодировке Latin1 и заставляет внедрять все остальное. Про вторую часть слишком многие европейцы и американцы забывают. Уж лучше бы вообще в Adobe не делали никакие шрифты доступными без внедрения.

Насчет Konqueror: библиотеке qt надо показать путь для шрифтов, которые надо внедрять в PostScript. Делается с помощью графической утилиты qtconfig.

Перенос файлов ghostscript, скорее всего, возможен. Надо скопировать /usr/share/ghostscript при условии совпадения номеров версий. Более поучительно будет узнать, какому пакету принадлежат файлы /usr/share/ghostscript/fonts/*.pfb, и переставить этот пакет.

Программы psnup (часть pstools) и a2ps, вероятно, доступны в Mandrake в виде RPM пакетов, а также из Интернета в виде исходников (поиск на www.freshmeat.net).

SYNOPSIS a2ps [OPTION]... [FILE]...

DESCRIPTION Convert FILE(s) or standard input to PostScript.

SYNOPSIS psnup [ -wwidth ] [ -hheight ] [ -ppaper ] [ -Wwidth ] [ -Hheight ] [ -Ppaper ] [ -l ] [ -r ] [ -f ] [ -c ] [ -mmargin ] [ -bborder ] [ -dlwidth ] [ -sscale ] [ -nup ] [ -q ] [ infile [ outfile ] ]

DESCRIPTION Psnup puts multiple logical pages onto each physical sheet of paper. The input PostScript file should follow the Adobe Document Structuring Conventions.

anonymous
()

Спасибо большое всем анонимусам. Интересно - почему тут и в новостях анонимусы такие разные.
По существу:
Довод в пользу mpage, mozilla etc. - не могло же всё перестать нарушиться одновременно - qt, mozilla и mpage.

Пойду копать...

bit
() автор топика

> не могло же всё перестать нарушиться одновременно - qt, mozilla и mpage

А нарушились не они. Они все время были сломаны. Нарушился грязный хак с фонтами ghostscript.

anonymous
()

Всем большое спасибо - это я сплоховал. Так оно всегда и было. Корректно показывались сделаные из qt pdf-ы. Кстати говоря где можно надыбать что-то не слишком громоздкое по настройке ghostscript - там установка типа бумаги, кодировки, шрифтов, или например печать только определённой страницы (если такое возможно)?
Ещё раз всем большое спасибо.
Счастливо.

bit
() автор топика

> где можно надыбать что-то не слишком громоздкое по настройке > ghostscript - там установка типа бумаги, кодировки, шрифтов, или > например печать только определённой страницы (если такое возможно)

Все это делается из тех приложений, которые записывают PostScript файл (вообразите на минутку, что у Вас настоящий PostScript принтер - ведь тогда ghostscript нужен только для экрана).

А подправлять существующие PostScript файлы можно с помощью программ из пакета pstools:

- Psresize rescales and centres a document on a different size of paper.

- Psselect selects pages from a PostScript document.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.