У нас есть собственная система, которая общается с различными принтерами на нескольких сайтах через 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 для последующего анализа
Установите принтер Postscript на 127.0.0.1.
Запустите процесс сервера netcat, чтобы подделать принтер. HP Jetdirect использует порт 9100 nc -l 127.0.0.1 9100> printout.ps
Распечатайте документ и наслаждайтесь красотой постскриптума :)
PS: Я сделал это, чтобы обойти ограничения на просмотр содержимого в PDF-файлах.