Печать документа HTML
Я успешно печатаю документ HTML со следующим кодом:
using (WebBrowser webBrowser = new WebBrowser())
{
webBrowser.DocumentText = text;
while (webBrowser.ReadyState != WebBrowserReadyState.Complete)
Application.DoEvents();
InternetExplorer internetExplorer = (InternetExplorer)webBrowser.ActiveXInstance;
internetExplorer.PrintTemplateTeardown += InternetExplorer_PrintTemplateTeardown;
internetExplorer.ExecWB(OLECMDID.OLECMDID_PRINT, OLECMDEXECOPT.OLECMDEXECOPT_DONTPROMPTUSER);
while (!documentPrinted)
Application.DoEvents();
internetExplorer.PrintTemplateTeardown -= InternetExplorer_PrintTemplateTeardown;
}
Две проблемы:
- Печатная бумага имеет заголовок (
page 1 of 1
) и нижний колонтитул (about:blank
а такжеdate
). Как я могу печатать без них? - Печатная бумага намного длиннее, чем фактическое содержание HTML-страницы. Как я могу остановить печать, когда содержание заканчивается?
1 ответ
Решение
Я нашел решение без использования пользовательского шаблона печати.
Этот код очищает верхний и нижний колонтитулы:
const string keyName = @"Software\Microsoft\Internet Explorer\PageSetup";
using (RegistryKey key = Registry.CurrentUser.OpenSubKey(keyName, true))
{
if (key != null)
{
key.SetValue("footer", string.Empty);
key.SetValue("header", string.Empty);
}
}
Чтобы обрезать бумагу в термопринтере по окончании работы браузера, я добавил PRINT_WAITFORCOMPLETION
параметр этой строки:
internetExplorer.ExecWB(OLECMDID.OLECMDID_PRINT, OLECMDEXECOPT.OLECMDEXECOPT_DONTPROMPTUSER, Win32.PRINT_WAITFORCOMPLETION);