ПО для приема и печати заданий на печать - PullRequest
0 голосов
/ 22 июля 2010

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

Как это произойдет -> 1- Когда это программное обеспечение, называемое «Виртуальный принтер», установлено на компьютере «X», Windows должно подумать, что это драйвер принтера / подключенный принтер к этому компьютеру. 2. Затем администратор этого ПК заходит в «Устройства и принтеры» в Windows и выбирает «Виртуальный принтер», щелкает правой кнопкой мыши, просматривает свойства и устанавливает флажок «Поделиться этим принтером» 3. Теперь другие ПК в локальной сети видят, что в локальной сети, подключенной к компьютеру «X», есть общий вызов принтера «Виртуальный принтер». 4- Таким образом, они могут отправлять задания на печать на этот «Виртуальный принтер», выбрав «Виртуальный принтер», когда им нужно что-то напечатать.

Как я могу написать эту программу (возможно, c #) для отображения себя в качестве принтера в Windows, а затем принимать входящие задания на печать и отправлять их на нужные компьютеры с подключенными принтерами.

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

Ответы [ 3 ]

2 голосов
/ 05 августа 2010

Это можно сделать, комбинируя четыре ингредиента правильно:

  • настройка очереди печати с драйвером принтера PostScript, совместно используемая в локальной сети;
  • Ghostscript (прокрутите вниз для получения gs871w{32,64}.exe) для преобразования PostScript в изображение;
  • RedMon (скачать redmon17.zip) для использования в качестве «монитора порта принтера»;
  • пакетный файл DOS (или программа C #, если хотите), чтобы делать именно то, что вы хотите;

В очереди печати будет использоваться ' Красный Порт irector Пн итор' (RedMon) для направления входящих заданий PostScript в выбранную вами программу / приложение / пакетный скрипт.

Осталось сделать вашу работу: написать простую программу / приложение / пакетный скрипт, который выполняет три вещи:

  1. принять входящий PostScript в качестве входного,
  2. вызов командной строки Ghostscript для преобразования ввода в% imageformat% по вашему выбору,
  3. и, наконец, отправьте% imageformat% в качестве заданий на принтер по вашему выбору.

Вот документ, описывающий некоторые основные сведения о RedMon, которые необходимо знать:


Если вы новичок в Ghostscript, у вас, вероятно, будет самая большая проблема с созданием командной строки, которая будет делать то, что вам нужно. Вот несколько примеров.

Первый преобразует данные, поступающие на стандартный ввод (стандартный ввод, - в конце команды), в одностраничный черно-белый TIFF G4 с разрешением 600 точек на дюйм, где каждая страница представляет собой отдельный файл, по имени page_001.tif, page_002.tif и т. д.:

gswin32c ^
   -dBATCH ^
   -dNOPAUSE ^
   -dSAFER ^
   -sDEVICE=tiffg4 ^
   -r600x600 ^
   -sOutputFile=c:/path/to/output/page_%03d.tif ^
   -       ### <-- note this '-'!

Вот командная строка Ghostscript, которая генерирует тот же вывод, но на этот раз как один многостраничный TIFF G4:

gswin32c ^
   -dBATCH ^
   -dNOPAUSE ^
   -dSAFER ^
   -sDEVICE=tiffg4 ^
   -r600x600 ^
   -sOutputFile=c:/path/to/output/multi_page_g4.tif ^
   -       ### <-- note this '-'!

О, вы не хотите черный + белый G4 TIFF, но цветной TIFF, 32-битный CMYK? ОК, используйте другое устройство вывода для Ghostscript:

gswin32c ^
   -dBATCH ^
   -dNOPAUSE ^
   -dSAFER ^
   -sDEVICE=tiff32nc^
   -r600x600 ^
   -sOutputFile=c:/path/to/output/multi_page_color.tif ^
   -       ### <-- note this '-'!

Вы хотите JPEG? Извините, нет такой вещи, как многостраничный JPEG. Но на одной странице нет проблем:

set outputname=some-uniq-name && ^
gswin32c ^
   -dBATCH ^
   -dNOPAUSE ^
   -dSAFER ^
   -sDEVICE=jpeg ^
   -dJPEGQ=95 ^
   -r600x600 ^
   -sOutputFile=c:/path/to/output/%outputname%-page_%03d.jpeg ^
   -       ### <-- note this '-'!
2 голосов
/ 06 августа 2010

Оглядываясь на мой первый ответ в свете вашего первоначального вопроса, я больше не понимаю, почему я так много акцентирую на "преобразовании входящей работы в изображение" * -этапе.Возможно, потому что вы упомянули в одном из ваших ответов, что вам нужна функциональность, подобная imageprinter .

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

  • очереди печати с драйвером PostScript
  • Ghostscript
  • RedMon в качестве портамонитор очереди печати
  • пакетный скрипт DOS

Разница теперь двоякая:

  1. теперь вы не настраиваете RedMon / Ghostscript вспособ преобразования входящего PostScript в формат изображения.
  2. теперь вы настраиваете RedMon для запуска Ghostscript таким образом, чтобы маршрутизировать задание через реальную целевую очередь «sharedprintername» на «remotecomputer» (включая настоящий драйвер).

Команда Ghostscript будет похожа на:

  gswin32c.exe ^
   -dNOPAUSE ^
   -dBATCH ^
   -dQUIET ^
   -sDEVICE=mswinpr2 ^
   -dNoCancel ^
   -sOutputFile="%%printer%%\\remotecomputer\sharedprintername" ^
   -        ### <-- note this '-' !
2 голосов
/ 22 июля 2010

Существует коммерческий компонент, позволяющий создавать виртуальные принтеры в Windows. Смотри http://www.colorpilot.com/emfprinterpilot.html

...