打印HTML文档

时间:2014-04-29 19:38:21

标签: c# html printing webbrowser-control printing-web-page

我正在使用以下代码成功打印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:blankdate)。没有它们我怎么打印?
  2. 打印的纸张比实际的HTML页面内容长得多。如何在内容结束时停止打印?

1 个答案:

答案 0 :(得分:4)

我找到了一个不使用自定义打印模板的解决方案 此代码清除页眉和页脚:

    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);