繁体   English   中英

将浏览器内容打印为横向

[英]Print webbrowser content as landscape

我需要从WebBrowser控件以横向打印文档(不显示PrintPreview并更改默认打印机页面方向)。

我试过了:

  1. TemplatePrinter这是我的模板template.html:

     <HTML XMLNS:IE> <HEAD> <?IMPORT NAMESPACE="IE" IMPLEMENTATION="#default"> <TITLE>Landscape</TITLE> </HEAD> <BODY> <IE:TEMPLATEPRINTER id="Printer"/> <SCRIPT Language="JavaScript"> Printer.orientation="landscape"; </SCRIPT> </BODY> </HTML> 

    我尝试使用它:

     mshtml.IHTMLDocument2 doc = wbReport.Document.DomDocument as mshtml.IHTMLDocument2; doc.execCommand("print", false, "template.tpl"); 
  2. 在HKCU \\ Software \\ Microsoft \\ Internet Explorer \\ PageSetup中创建值为“ 2”的注册表项“ orientation”

  3. 添加样式:

     <style type="text/css" media="print"> @page { size: landscape; margin: 2cm; } </style> 

但是我仍然将html打印为肖像。 也许有更好的解决方案将html打印为横向,或者在使用TemplatePrinter时出现一些错误?

在弄乱注册表之后,尝试在IE中使用打印模板和其他各种方法(均无效),我产生了一个有点怪异的解决方法。

我扩展了WebBrowser控件,并创建了一个新的打印预览方法,在其中,我有一些方法可以传递ALT + L组合键以启用横向视图:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace YourProjectNamespace
{
    class ExWebBrowser : WebBrowser
    {
        void setLandscapeTimer_Tick(object sender, EventArgs e)
        {
            SendKeys.SendWait("%L");
            this.ProcessDialogKey(Keys.Alt & Keys.L);
            SendKeys.Flush();
        }

        public void _ShowPrintPreviewDialog()
        {
            this.ShowPrintPreviewDialog();
            this.Focus();

            Timer setLandscapeTimer = new Timer();
            setLandscapeTimer.Interval = 500;
            setLandscapeTimer.Tick += new EventHandler(setLandscapeTimer_Tick);
            setLandscapeTimer.Start();
        }
    }
}

您需要做的只是简单地实例化对象,像使用标准WebBrowser一样加载文档并调用_ShowPrintPreviewDialog。

请注意,一旦设置了风景视图,您可能想停止计时器。

有人遇到同样的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM