2009-08-19 49 views
2

印刷ダイアログは表示されませんが、運がないようにWPF WebBrowserコントロールの内容を印刷しようとしています。WPF WebBrowserの内容を印刷する

は、私は、次の試み、それが仕事をしたと確信しています

PrintDialog printDialog = new PrintDialog(); 
printDialog.PrintDocument(((IDocumentPaginatorSource)browser.Document).DocumentPaginator, "My App"); 

が、何らかの理由で、私は今、次の例外を取得してい

」タイプのCOMオブジェクトをキャストすることができませんmshtml.HTMLDocumentClass 'をインターフェイスタイプ' System.Windows.Documents.IDocumentPaginatorSource 'に追加します。次のエラーのため、IID '{2C0C27DF-282F-3225-ADCD-CEC68F890EEB}'のインターフェイスのCOMコンポーネントのQueryInterface呼び出しが失敗したため、この操作は失敗しました:このようなインターフェイスはサポートされていません(HRESULT:0x80004002(E_NOINTERFACE)例外) 。

私のPC上で私が変わったと思うのは、私が最後に試してからIE8をインストールしたことだけですが、本当にそれを破るでしょうか?

答えて

2

、このコードを使用します

private void PrintCurrentPage() 
{ 
    // document must be loaded for this to work 
    IOleServiceProvider sp = WebBrowser1.Document as IOleServiceProvider; 
    if (sp != null) 
    { 
     Guid IID_IWebBrowserApp = new Guid("0002DF05-0000-0000-C000-000000000046"); 
     Guid IID_IWebBrowser2 = new Guid("D30C1661-CDAF-11d0-8A3E-00C04FC9E26E"); 
     const int OLECMDID_PRINT = 6; 
     const int OLECMDEXECOPT_DONTPROMPTUSER = 2; 

     dynamic wb; // should be of IWebBrowser2 type 
     sp.QueryService(IID_IWebBrowserApp, IID_IWebBrowser2, out wb); 
     if (wb != null) 
     { 
      // this will send to the default printer 
      wb.ExecWB(OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER, null, null); 
     } 
    } 
} 
[ComImport, Guid("6D5140C1-7436-11CE-8034-00AA006009FA"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)] 
private interface IOleServiceProvider 
{ 
    [PreserveSig] 
    int QueryService([MarshalAs(UnmanagedType.LPStruct)] Guid guidService, [MarshalAs(UnmanagedType.LPStruct)] Guid riid, [MarshalAs(UnmanagedType.IDispatch)] out object ppvObject); 
} 

WebBrowser silent printing

関連する問題