Проверка PostScript без попыток его распечатать? - PullRequest
6 голосов
/ 03 ноября 2008

Сохранение данных в Postscript в моем приложении приводит к файлу Postscript, который я могу просматривать без проблем в GhostView, но когда я пытаюсь распечатать его, принтер не может распечатать его, потому что он кажется недействительным.

Есть ли способ проверить / найти ошибки в файлах Postscript, не отправляя их на принтер? Предпочтительным будет какой-то Java API / библиотека, но программа, которая делает то же самое, тоже подойдет.


Редактировать # 1 : нет, я не знаю, почему он недействителен, и даже не обязательно, если он недействителен, но хотел бы иметь возможность проверить его вне ghostview или выяснить, что происходит, не может печатать.


Ответ : Хорошо используя трюк ps2ps, я смог увидеть вывод, который делает Postscript, и там проверить разницу. Разница была в том, что мне не разрешено иметь десятичное число для ширины или высоты изображений в Postscript, а только целые числа. Таким образом, я все еще не нашел способ проверить, но этот способ был достаточно хорош для моей проблемы. Спасибо.

Ответы [ 3 ]

7 голосов
/ 05 июня 2010

Всякий раз, когда мне нужно проверить файл PostScript с помощью Ghostscript, не обращая внимания на его отображаемые изображения страниц, я использую устройство «nullpage»:

gswin32c ^
   -sDEVICE=nullpage ^
   -dNOPAUSE ^
   -dBATCH ^
   c:/path/to/file/to/be/validated.pdf-or-ps ^
   1>validated.stdout ^
   2>validated.stderr

В случае возникновения проблемы будет установлен ненулевой %errorlevel%, а файл журнала validated.stderr будет содержать все сообщения, которые Ghostscript выдает во время рендеринга.

4 голосов
/ 03 ноября 2008

Знаете ли вы, почему это недействительно?

Мое предложение состояло бы в том, чтобы передать его в Ghostscript / Ghostvoiew, но, учитывая, что Ghostview может его просматривать, может показаться, что, по крайней мере, некоторые интерпретаторы считают его верным Postscript.

Так что это может быть что-то специфическое для вашего принтера - либо что-то требовательное в PS, которое позволяет Ghostscript, либо оно обращается к чему-то, чего нет на вашем принтере (возможно, файловой системе), или превышает какой-то лимит памяти, или ...

Дело в том, что это может быть не ошибочная программа PS, и поэтому библиотека / API для ее проверки может не помочь

Редактировать: печатает ли что-нибудь из этого? Вы пробовали принтер другого производителя (или, в любом случае, поставщика переводчика Postscript). Ghostview выдает / регистрирует какие-либо предупреждения или ошибки?

Откуда (из какого приложения) происходит документ?

Можете ли вы создать другие экземпляры документа? (например, действительно простой / пустой, чтобы увидеть, если это также дает ошибки)

Если только API не предоставляет доступ к определенному интерпретатору, который используется в вашем принтере, я думаю, что вы проверяете его на соответствие другому интерпретатору PS (Ghostscript).

Поскольку в мире не так много клонов PS, получить доступ к другому клону на базе не-GS, вероятно, будет непросто

Edit2: эта ссылка (если довольно старая информация) дает информацию о том, как получить более подробную информацию от вашего принтера об ошибке: http://www.quite.com/ps/errors.htm

3 голосов
/ 03 ноября 2008

Если вы видите его в ghostview, это означает, что ghostscript может его проанализировать.

Итак, одна хитрость, которую вы можете попробовать использовать для печати (но не для проверки) вашего файла, это использовать режим вывода postscript ghostscript (для него есть обертка с именем ps2ps, которая в основном добавляет -sDEVICE=pswrite; также ps2ps2, который использует -sDEVICE=ps2write).

...