Назад | Перейти на главную страницу

Как записать вывод postscript через TCP / IP? (для тестирования)

У нас есть собственная система, которая общается с различными принтерами на нескольких сайтах через TCP / IP. Система выводит только Postscript, который, очевидно, отправляет через TCP / IP. Мне действительно интересно, есть ли какое-либо программное обеспечение, которое я мог бы установить на свой компьютер, который я мог бы настроить как фиктивный принтер для захвата этих данных PostScript.

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

Мне не нужно конвертировать его в PDF или любой другой формат, но это было бы неплохо.

Вы не говорите, что это за операционная система, но вы можете использовать что-то вроде TCPflow, wirehark или tcpdump для захвата пакетов при их отправке по сети.

Если это Windows, я полагаю, что когда-то большинство диалогов принтера позволяло вам печатать в файл. Предположительно, это будет выход соответствующего драйвера. Я так давно не использовал Windows, что вы, вероятно, можете спокойно игнорировать этот абзац. Возможно, дело в Windows 3.11.

Вот как я решил эту проблему:

Я настраиваю RawPrinterServer который будет прослушивать порт 9100 как службу. Затем я установил RedMon и Ghostscript.

Redmon позволяет мне создавать настраиваемый порт принтера в Windows, который будет пересылать задания печати в любое программное обеспечение, которое вам нравится.

Ghostscript интерпретирует входящий постскрипт и выводит его в формате PDF.

Я создал принтер в Windows с настраиваемым перенаправленным портом, который направляет на исполняемый файл ghostscript.

Путь к программе: C:\BIN\gs\gs8.63\bin\gswin32c.exe

Параметры: -sDEVICE=pdfwrite -dPDFX=true -dNOPAUSE -dSAFER -sPAPERSIZE=a4 -sOutputFile="C:\bin\output.pdf" -c .setpdfwrite -f -

Теперь в собственном программном обеспечении, которое я использую, я настраиваю принтер, направляя его на IP-адрес моего компьютера с портом 9100.

Теперь, когда я печатаю на свой новый `` принтер '', программное обеспечение отправляет постскрипт на мой IP-адрес, RawPrintServer принимает данные TCP и пересылает их на настроенный мной принтер, а порт настраиваемого принтера пересылает эти данные в Ghostscript, который сохраняет файл PDF на моем локальном компьютере. машина.

Я бы проголосовал за Wireshark, так как он может легко отслеживать поток TCP для протокола LPD и сохранять его в файл.

Я только что это проверил, и все, что вам нужно, - это удалить несколько строк из начала выходного файла, и у вас есть действительный PS.

Я бы netcat прослушивать локальный порт LPD и записывать полученные данные в файл. Например:

nc -l -p 515 > output.ps

Использует ли собственная система печати LPR? Если это так, вы могли бы, по крайней мере, в принципе, запустить сервер LPR, который записывал полученный постскриптум в файл, а не на принтер. Я не знаю ни одного случая, хотя быстрый Google обнаружил довольно много вещей, связанных с Windows LPR.

Если вы умеете работать с компилятором C ++, у меня где-то валяется код для LPR-сервера. Я написал это еще в NT3. За 50 дней до того, как Windows изначально поддерживала LPR. Нетрудно изменить код для отправки вывода в файл вместо порта принтера. Это должно быть крайней мерой, должно быть что-то, что сделает эту работу.

Одна мысль. Предположим, вы устанавливаете поддержку печати Windows unix на свою рабочую станцию ​​или какой-нибудь удобный сервер, затем переводите принтер в автономный режим и печатаете на нем. Постскриптум предположительно появится где-нибудь в C: \ Windows \ system32 \ spool \ PRINTERS.

JR

В Linux вы можете использовать tcpdump или WireShark, в Windows я знаю только wirehark, лично мне больше нравится wirehark, потому что у него хороший графический интерфейс, однако вы можете записать tcpdump в файл и передать его в wirehark для последующего анализа

  1. Установите принтер Postscript на 127.0.0.1.

  2. Запустите процесс сервера netcat, чтобы подделать принтер. HP Jetdirect использует порт 9100 nc -l 127.0.0.1 9100> printout.ps

  3. Распечатайте документ и наслаждайтесь красотой постскриптума :)

PS: Я сделал это, чтобы обойти ограничения на просмотр содержимого в PDF-файлах.