2017-10-05 11 views
0

私はSystem.Windows.Forms.WebBrowserを持っており、一時的なpdfドキュメントを表示しています。ドキュメントはプログラムによって構築され、通常のブラウザで正常に動作します。WebBrowserとbrowser.Documentから印刷できません。

ファイルがbrowser.Navigate()を呼び出すことでロードされ、PDFは、実際のアプリケーションウィンドウに細かい表示しますが、browser.Print()を呼び出すときにはエラーをトリガ:

enter image description here

私はまたしても、browser.Documentがnull残っていることに気付きました

browser.DocumentCompleted += documentCompletedHandler; 

... 

private void documentCompletedHandler(object sender, WebBrowserDocumentCompletedEventArgs e) { 
WebBrowser b = sender as WebBrowser; 
    Console.WriteLine("Loaded: " + b.Url.AbsoluteUri); // Correct path. 
    // b.Document == null here and everywhere else. 
} 

XAML:

完成した文書のコールバック中
... 
<WindowsFormsHost> 
    <wf:WebBrowser x:Name="browser" /> 
</WindowsFormsHost> 
... 
+0

あなたはいつものようにも、PDFファイルや他のウェブページを読むのだろうか? – Isma

+0

印刷前にプレビューとして使用されるPDFファイルのみ –

+0

この機能を使用するには、Adobe PDF Readerがインストールされている必要がありますか? – Isma

答えて

1

WPFアプリケーションにPDFファイルを表示するには、WPF用のWindowsFormsHostコンポーネントを使用してホストされているWinForms WebBrowserコントロールを使用しているため、WPFアプリケーションでAdobe PDF Reader DirectXコントロールを使用できます。

あまりにも多くの層、あなたは思いませんか?これはエラーが発生する可能性がありますので、システムを単純化しようとしましょう:

まず、WPFにはネイティブWebBrowserコントロール(.NET 3.5 SP1の後)が付属していますので、WindowsFormsHostを直接避けてコントロールを使用できます。

<WebBrowser Source="C:\SomeFile.pdf" /> 

http://www.c-sharpcorner.com/uploadfile/dhananjaycoder/web-browser-control-in-wpf/

http://www.wpf-tutorial.com/misc-controls/the-webbrowser-control/

これは、すでにあなたの問題を解決することがありますが、それは、そのユーザが必要になりますので、その後のAdobe ReaderのActive Xを使用する組み込みブラウザを使用して、最善の解決策ではないかもしれませんAdobe PDF ReaderとAdobe PDF ActiveX Readerがインストールされているだけでなく、IEの作業バージョンもインストールされています。

一つの解決策は、あなたがすでにそうであるようにWindowsFormsHostを使用することではなく、Webブラウザーを使用しての、Windowsフォーム用のAdobe PDFリーダーのActive Xを使用します:

https://wpfpdfviewer.codeplex.com/ https://www.codeproject.com/Articles/380019/Using-Adobe-Reader-in-a-WPF-app

これは正常に動作します印刷に問題はありませんが、作業するためには、ユーザーはシステムにAdobe PDF Readerをインストールする必要があります。

最良の解決策は、外部依存関係のないコントロールを使用することです。そのためには、多くの高品質商用コンポーネント(DevExpressまたはTelerik PDFビューアコントロールの検索)があります。

あなたが何かオープンソースを試してみたい場合は、私は自分自身をこれを見つけたが、それを使ったことがない:

https://github.com/reliak/moonpdf

+0

私は提案された方法を使用しませんでしたが、私はポストの中心をアドバイス、すなわちレイヤーを単純化し、インストールする必要のあるものに依存しないようにしました。私は既にPDFを構築するためにライブラリを使用しており、コントロールが提供されています。このコントロールは機能し、私はこれをwebbrowserの代わりに使用します:) –

関連する問題