13:38

149ea694a792f3ad2caaf77077a0df58 Спорящая с богом
Задача такая: необходимо распечатать файл HTML, но не код, а страницу-результат (она очень простая, без скриптов). Причём, сделать это надо не отобразив её на экране - сразу послать на принтер. COM-объект для отображения HTML-страниц функции печати не имеет, точнее имеет, но в контекстном меню, а юзер, как известно, туп, да и не выход это...

Язык: C#.

Комментарии
18.05.2005 в 15:45

всё иллюзия
сам бился одно время с такой задачей, но так и не догнал как работает тот COM ... как то он очень все умельчал...

в любом случае надежда есть, так как программ типа html2image я видел как минимум 2
18.05.2005 в 15:59

Караидель А что за ком-объект ты используешь? Наши юзают AxSHDocVw.AxWebBrowser, он в списке комов так и называется, что-то типа "Обозреватель веб-страниц". Насколько я понимаю, показывать его на экран совсем не обязательно, но печатать с него можно. Не то?
18.05.2005 в 21:34

149ea694a792f3ad2caaf77077a0df58 Спорящая с богом
Tzota

Его и пользую... Но пока не нашла как с него печатать;о((( Научи, а? Очень надо...
18.05.2005 в 23:35

Караидель Приду на работу, выкину тебе кусок кода. Просто с этим участком я не работаю и на память тебе ничего не скажу. А завтра просто выложу наш m_btnPrint_OnClick.
18.05.2005 в 23:36

149ea694a792f3ad2caaf77077a0df58 Спорящая с богом
Tzota

Ура!!! Жду;о)
19.05.2005 в 11:07

Все совпадения с реальными переменными являются случайными©



private void DocumentPrint()

{

// Проверяем возможность печати

if (!IsCommandEnabled(SHDocVw.OLECMDID.OLECMDID_PRINT))

return;

object nullValue = System.Reflection.Missing.Value;

object pvaIn = new string[]{string.Empty, };



browser.ExecWB(SHDocVw.OLECMDID.OLECMDID_PRINT,

SHDocVw.OLECMDEXECOPT.OLECMDEXECOPT_DONTPROMPTUSER,

ref pvaIn,

ref nullValue);

}



private bool IsCommandEnabled(SHDocVw.OLECMDID theCommand)

{

int response = (int)browser.QueryStatusWB(theCommand);

return (response & (int) SHDocVw.OLECMDF.OLECMDF_ENABLED) != 0 ? true : false;

}
19.05.2005 в 11:10

Мда. Смотрю на самую последнюю строчку и подозреваю, что там могли бы и обойтись без фразы ?true:false, но уж их дело. Да и не в этом соль.
19.05.2005 в 11:22

149ea694a792f3ad2caaf77077a0df58 Спорящая с богом
Tzota

То есть даже можно обойтись без объекта PrintDocument?

Кстати, а зачем nulValue и pvaIn передаются by ref? Это же упакованные объекты, они сами по себе ссылочные.

К какому типу относится переменная SHDocVw и для чего она применяется?
19.05.2005 в 11:31

Ну, как я вижу по тексту, можно обойтись.



Патамушта если писать вызов без "ref", то компилятор не пропустит. Достаточная причина? :-))))



SHDocVw - эт не переменная, это namespace с енумераторами.
19.05.2005 в 11:40

149ea694a792f3ad2caaf77077a0df58 Спорящая с богом
Tzota

Ахха, всё, разобралась. Спасибо! Сейчас буду пробовать...
19.05.2005 в 11:46

Караидель Ага. Если что - пиши.