Печать HTML документов
От: Telemax  
Дата: 07.11.01 11:04
Оценка:
Есть задача печати документов в формате HTML. В Windows это прекрасно реализовано через контекстное меню Explorer , пункт "Печать". Хочется реализовать нечто подобное, чтоб не надо было открывать документ или диалоговое окно Print а просто послать на печать. Мне кажется это селано через какой-то СОМ-интерфейс. ПОдскажите поточнее.
Re: Печать HTML документов
От: Ростислав Глухов Россия http://www.geocities.com/rg2204/
Дата: 07.11.01 11:15
Оценка:
Здравствуйте Telemax, Вы писали:

T>Есть задача печати документов в формате HTML. В Windows это прекрасно реализовано через контекстное меню Explorer , пункт "Печать". Хочется реализовать нечто подобное, чтоб не надо было открывать документ или диалоговое окно Print а просто послать на печать. Мне кажется это селано через какой-то СОМ-интерфейс. ПОдскажите поточнее.


IWebBrowser2::ExecWB(OLECMDID_PRINT, OLECMDEXECOPT_PROMPTUSER, NULL, NULL);
- А Вы что курите?
— Минздрав предупреждает
Re[2]: Печать HTML документов
От: telemax  
Дата: 07.11.01 12:01
Оценка:
Здравствуйте Ростислав Глухов, Вы писали:

РГ>Здравствуйте Telemax, Вы писали:


T>>Есть задача печати документов в формате HTML. Хочется реализовать нечто подобное, чтоб не надо было открывать документ или диалоговое окно Print а просто послать на печать.


РГ>IWebBrowser2::ExecWB(OLECMDID_PRINT, OLECMDEXECOPT_PROMPTUSER, NULL, NULL);


Я рассматривал этот интерфейс и эту команду. Если не ошибаюсь, для его использования _обязательно_ надо создать контрол Microsoft WebBrowser. У этого контрола _обязательно_ должно быть родительское окно. А нельзя ли без всего этого? Тоесть, чтоб этот контрол и видно не было?
Хотелось бы взглянуть на примеры такой работы IWebBowser2.
Re[3]: Печать HTML документов
От: Ростислав Глухов Россия http://www.geocities.com/rg2204/
Дата: 07.11.01 12:31
Оценка:
Здравствуйте telemax, Вы писали:

T>Здравствуйте Ростислав Глухов, Вы писали:


РГ>>Здравствуйте Telemax, Вы писали:


T>>>Есть задача печати документов в формате HTML. Хочется реализовать нечто подобное, чтоб не надо было открывать документ или диалоговое окно Print а просто послать на печать.


РГ>>IWebBrowser2::ExecWB(OLECMDID_PRINT, OLECMDEXECOPT_PROMPTUSER, NULL, NULL);


T>Я рассматривал этот интерфейс и эту команду. Если не ошибаюсь, для его использования _обязательно_ надо создать контрол Microsoft WebBrowser. У этого контрола _обязательно_ должно быть родительское окно. А нельзя ли без всего этого? Тоесть, чтоб этот контрол и видно не было?


Для этого метода контрол, действительно нужен
::ShowWindow(hWnd,SW_HIDE);

T>Хотелось бы взглянуть на примеры такой работы IWebBowser2.
- А Вы что курите?
— Минздрав предупреждает
Re[4]: Печать HTML документов
От: Ростислав Глухов Россия http://www.geocities.com/rg2204/
Дата: 08.11.01 06:53
Оценка:
Да!
Можно попробовать создать CAxWindow,
положить на него WebBrowser
а потом после использования прибить все это.
- А Вы что курите?
— Минздрав предупреждает
Re[5]: Печать HTML документов
От: Devis  
Дата: 27.11.02 09:34
Оценка:
Здравствуйте, Ростислав Глухов, Вы писали:

РГ>Да!

РГ>Можно попробовать создать CAxWindow,
РГ>положить на него WebBrowser
РГ>а потом после использования прибить все это.

Такой метод работает, только существует проблема с синхронизацией.
IWebBrowser2::ExecWB(OLECMDID_PRINT, OLECMDEXECOPT_PROMPTUSER, NULL, NULL); —
работает асинхронно (запускает тред в браузере). И если окно прибить раньше
времени, то документ не распечатается целиком. Насколько я знаю сто процентного
решения этой проблемы не существует. Сабыие OnAfterPrint не всегда генерится
(кроме того оно поддерживается только начиная с версии 5), можно пытаться смотреть спул принтера на предмет состояния печати документа, либо считать количество тредов в браузере.
И есть еще проблема — если окно контейнера в состоянии Invisible, а документ
имеет гиперссылки, то он может вообще не распечататся просто тред будет висеть
и ничего не делать...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.