打印预览不加载html文档,c# – 在没有DocumentViewer的情况下显示HTML文档的打印预览...

您可能希望使用WebBrowser控件并使用此处提供的示例对其进行扩展:

http://www.codeproject.com/KB/miscctrl/wbp.aspx

[编辑:更新答案以说明如何使用WPF WebBrowser控件(System.Windows.Controls.WebBrowser)完成相同的操作]

底层控件是相同的 – 它是SHDocVw.dll中的ActiveX组件.

您需要添加对SHDocVw的引用,该引用在COM引用列表下作为“Microsoft Internet Controls”

[ComImport, InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]

[Guid("6d5140c1-7436-11ce-8034-00aa006009fa")]

internal interface IServiceProvider

{

[return: MarshalAs(UnmanagedType.IUnknown)]

object QueryService(ref Guid guidService, ref Guid riid);

}

static readonly Guid SID_SWebBrowserApp = new Guid("0002DF05-0000-0000-C000-000000000046");

void webBrowser_LoadCompleted(object sender, NavigationEventArgs e)

{

IServiceProvider serviceProvider = null;

if (webBrowser.Document != null)

{

serviceProvider = (IServiceProvider)webBrowser.Document;

}

Guid serviceGuid = SID_SWebBrowserApp;

Guid iid = typeof(SHDocVw.IWebBrowser2).GUID;

object NullValue = null;

SHDocVw.IWebBrowser2 target = (SHDocVw.IWebBrowser2)serviceProvider.QueryService(ref serviceGuid, ref iid);

target.ExecWB(SHDocVw.OLECMDID.OLECMDID_PRINTPREVIEW, SHDocVw.OLECMDEXECOPT.OLECMDEXECOPT_DODEFAULT, ref NullValue, ref NullValue);

}

XAML:

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

Title="MainWindow" Height="350" Width="525" Loaded="Window_Loaded">

任何有兴趣的的WinForms控件版本(System.Windows.Forms.WebBrowser)可以跳过所有的IServiceProvider行李,只是使用ActiveXInstance属性(WPF控件不公开:

SHDocVw.WebBrowser target = webBrowser.ActiveXInstance as SHDocVw.WebBrowser;

target.ExecWB(SHDocVw.OLECMDID.OLECMDID_PRINTPREVIEW, SHDocVw.OLECMDEXECOPT.OLECMDEXECOPT_DODEFAULT, null, null);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值