Печать в терминале Windows


Существует проблема печати в терминальной сессии Windows. Особенно это актуально для тех, кто работает с 1С. Есть как платные, так и бесплатные решения. Например, платное решение ScrewDrivers от фирмы triCerat стоит более 50000 рублей. Вашему вниманию предлагается программа, которая в связке с бесплатными FoxitReader и PDFCreator решает обозначенную проблему.

Существует довольно много как стандартных, так и нестандартных решений проблемы печати в терминальной сессии Windows. Данная публикация и предлагаемая программа-скрипт, написанная на AutoIT, не претендуют на новизну, а являются результатом практической реализации идей из следующих источников:

http://autoit-script.ru/index.php?topic=5266.0

http://habrahabr.ru/post/112404/

http://www.forum.mista.ru/topic.php?id=249047

http://viterminal.ru/blog/page/interesnoe-reshenie-po-probrosu-printerov

Итак, исходные данные. 1)На клиенте должен быть установлен FoxitReader. 2)В терминальной сессии — виртуальный принтер PDFCreator. 3)Также необходимо наличие программы-скрипта PrintFoxit.exe для 32-х разрядной или PrintFoxit_x64.exe для 64-х разрядной версии Windows. Программа-скрипт предполагает стандартный каталог установки программ — Program Files, иначе работать не будет, чтобы работало нужно править скрипт (на всякий случай исходные коды прилагаются).

1.На клиенте создаем каталог, куда будут копировать pdf-файлы. В этот каталог помещаем исполняемый файл PrintFoxit.exe или PrintFoxit_x64.exe в зависимости от версии Windows. Создаем ярлык на PrintFoxit.exe в автозагрузке и запускаем файл. Программа должна быть в памяти системы, так как она постоянно анализирует свой текущий каталог на наличие pdf-файлов.

2.Настраиваем терминальный клиент. В его свойствах, там где определяются локальные ресурсы, должна стоять галочка напротив диска, на котором находится каталог с файлом PrintFoxit.exe. См. рис.1. У меня это диск D: .  Т.е. к терминальной сессии должен быть подключен локальный диск клиента с каталогом, куда будут копироваться PDFCreator-ом файлы, отправленные в терминале на печать.

3.В терминальной сессии настраиваем PDFCreator. В настройках Авто-сохранение указываем подключенный в терминале диск с папкой, где находится PrintFoxit.exe. У меня это: \dДляПечати

4.В терминальной сессии в качестве принтера по-умолчанию для удобства нужно указать принтер PDFCreator.

12 Comments

  1. Иной

    А в чём проблема то? Если принтера сетевые — беспроблемно. Не сетевые можно сделать сетевыми с помощью принтсерверов.

    На терминал прописываются все принтера, на которые нежна печать и вуаля. Проверенно, работает даже если сидишь терминалкой на серваке в другом конце страны а печатаешь себе на принтер (устанавливаются дрова притрера, или даже принтер локально. Прописывается порт подключения на апишку принтера).

    Ни в коем случае не нужно «тянуть» свои локальные принтера терминалным подключением, иначе будут множится принтера на терминалве. А так как описано выше — работает =). Причём без использования стороннего софта, штатными средствами.

    Единственное условие — условно единая сеть со статическими апишками.

    Reply
  2. Alister
    На терминал прописываются все принтера, на которые нежна печать и вуаля.

    Не в применение этой разработки, а только для уточнения — не под все принтеры есть драйвера, например для 2008R2

    Reply
  3. Иной

    (2) Alister, Тоже вариант. Но тут тогда больше проблема в планировании развития =). Потому как получается сервак новенький поставить поставили, а про то что на нём работать придется не подумали…

    Тогда вопрос становится интересным.

    Reply
  4. compil7

    (1) Иной, описываемый в публикации способ печати — это один из самых простых вариантов решения.

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

    В используемом способе подключения ни в коем случае не нужно пробрасывать локальные принтеры на терминальный сервер!!! Подключается только локальный диск с папкой, в которую через терминальную сессию сбрасываются pdf-документы на печать. После печати эти документы автоматически удаляются с помощью используемой программы-скрипта. Если нужно, то скрипт можно переделать и архивировать распечатываемые документы в отдельную папку пользователя, потом в случае каких-либо непоняток предъявить ему в качестве доказательства.

    В предложенном способе абсолютно не нужно условно-единая сеть со статическими ip-шниками.

    Reply
  5. compil7

    (2) Alister, очень часто в качестве терминального сервера используют обычную WindowsXP. Предложенный способ может решить проблему печати, даже если в качестве терминала используется FreeBSD или Linux.

    Reply
  6. Иной

    Согласен. Переспав с этой мыслью, соглашаюсь. В варианте когда нужно работать с тем что уже есть.

    Только нужно уточнить что клиент в этом контексте это система с установленным принтером, на базе которой будет осуществляться печать.

    То есть весть механизм заключается в переборе содержимого папки и отсылке оного на печать?

    Reply
  7. compil7

    (3) Иной, зачастую так и происходит. Приходишь в организацию и слышишь: мы купили сервер для 1С, чтобы быстрее работать. Потом выясняется, что у них 1С 7.7 и работает в ней около 10 человек, и используется файловый вариант, и база выросла. Покупать sql-версию не хотят, но хотят чтоб быстрее работало. Естественно, единственное решение — терминальный режим. Хорошо, если все сидят в одном здании и есть ethernet, тогда не проблема просто расшарить принтеры…

    Reply
  8. compil7

    (6) Иной, ну конечно! Клиент — это обычная бухгалтерша, у которой стоит обычный usb-шный принтер и которая работает в терминале, а терминал установлен неизвестно где…

    В папке максимум находится только исполняемый файл скрипта и один pdf-документ, который после распечатки удаляется.

    Reply
  9. Иной

    =). У меня просто пользователи разбросаны по стране группами более чем по 100 человек. И много-много принтеров.

    Тут уже не до экономии =)

    Reply
  10. compil7

    (9) Иной, в вашем случае, конечно, идеальный вариант — это ScrewDrivers от triCerat. Дорого, но зато сердито и надежно.

    Reply
  11. Иной

    Проще принтера покупать к которым есть дрова. Тем более что дешевле покупать большие МФУ-кши рассчитанные на сотни тысяч страниц печати чем дергаться с мелкими принтерами (которые при таком объеме печати долго не живут).

    Ну и для ускорения работы баз основную роль играет не версия винды а качество железа. У нас блейд система и 2003 винда работает нормально (терминалки). Жаль когда решение принимают не ИТ специалисты, или если принимают то не обдуманные. А потом уже и деваться то некуда =)

    Reply
  12. Alister

    Иной, Вы по-видимому фикси, а я узнал, что будет сервер с win2008r2 только когда его уже купили, ибо железо обслуживает одна фирма, а 1С другая, так что не до долгосрочного планирования, увы 🙁

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *