Проверка Postscript без попытки его распечатать?

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

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


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


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

3 ответов


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

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


всякий раз, когда мне нужно проверить файл 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, выплевываемые во время рендеринга.


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

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

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

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

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

откуда (какое приложение) берется документ?

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

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

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

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