Печать документа 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;
}

Две проблемы:

  1. Печатная бумага имеет заголовок (page 1 of 1) и нижний колонтитул (about:blank а также date). Как я могу печатать без них?
  2. Печатная бумага намного длиннее, чем фактическое содержание 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);
Другие вопросы по тегам