Добрый день. У меня возникла следующая задача : нужно, чтобы в зависимости от отчета, печать происходила на определенном принтере. То есть вызывалось окно с настройками этого принтера. Может кто-нибудь знает, каким образом это можно реализовать?

Нравится

6 комментариев

frpMain.Print() вызывает окно настройки принтера, который задан по-умолчанию? Как мне это изменить?

Реализовать поставленную Вами задачу можно при помощи прописывания конкретного принтера в скрипте с использованием метода PrintOut(). Для ее реализации высылаю ниже пример подобного скрипта. Он реализовывает распечатку текста без показа окна с автоматическим выбором принтера (строка - название):

var word = new ActiveXObject("Word.Application");
word.ActivePrinter = '\\\\poligon\\HP LaserJet 4250 PCL 6 on NE03:'; //Название принтера
var WordDoc = word.Documents.Add('c:\\test.doc');
WordDoc.PrintOut();

Таким образом, используя метод PrintOut Вы сможете реализовать поставленную задачу. У этого метода есть достаточно большое количество аргументов, которые Вы также можете указать при распечатке. Думаю, названия этих аргументов очевидны и не требуют дополнительного комментария:

PrintOut([Background, Append, Range, OutputFileName, From, To, Item, Copies, Pages, PageType, PrintToFile, Collate, ActivePrinterMacGX, ManualDuplexPrint, PrintZoomColumn, PrintZoomRow, PrintZoomPaperWidth, PrintZoomPaperHeight])

Желаю удачи!

Спасибо за пример, но у меня отчет в FastReport. Пока я реализовала данную задачу след. образом:
1. Получаю объект Word.Application
2. Меняю принтер при помощи Application.ActivePrinter
3. После печати отчета возвращаю принтер по умолчанию

Но есть проблемы, например, у пользователя может не стоять пакет Офиса. Может кто-нить подскажет ActiveXObject из винды, у которого есть свойство ActivePrinter ну или что-нить подобное.

Как вариант, можно поискать свойтва, которые позволили бы Вам реализовать поставленную задачу на бесплатных ресурсах.
Думаю, на эту тему можно найти немало материала. Мне удалось найти что-то подобное:
http://forum.ru-board.com/topic.cgi?forum=33&topic=1491&start=580
http://www.securitylab.ru/forum/forum18/topic28917/
http://www.networkdoc.ru/soft/index.php?option=com_content&task=view&id…

Возможно, это Вам поможет реализовать описанный функционал.

Желаю удачи!

Показать все комментарии