web-dev-qa-db-ja.com

PDFビューアーをWPFアプリケーションに追加する

私はWPFを初めて使用し、WPFアプリケーションにPDFビューアーを追加しようとしていますが、それを行う方法がうまくいかないようです...私がオンラインで見つけたチュートリアル/例ですが、さまざまな理由で私にはうまくいかないようです...

たとえば、次のチュートリアルを試してみました。 https://documentation.devexpress.com/#WPF/CustomDocument114328 PDF設計時のビューア-itに言う

dX.15.2:Data&Analytics ToolboxタブからPdfViewerControlをドラッグして、メインウィンドウにドロップします。

ただし、ツールボックスにData & Analyticsタブはないようです... Dataタブがありますが、ポインター、チャート、リストビューなどのアイテムがあります。何かありますかVisual StudioでData & Analyticsツールバーを追加/有効にする必要がありますか?

私は次のチュートリアルに従ってみました: https://documentation.devexpress.com/#WPF/CustomDocument114329 PDF Viewer by code- it

ソリューションエクスプローラーを開き、[参照設定]を右クリックして[参照の追加...]を選択し、PDF Viewer Libraryを追加します。

次に、DevExpress.Data.v15.2、DevExpress.Pdf.v15.2.Core、DevExpress.Xpf.DocumentViewer.v15.2.Core、DevExpress.Xpf.PdfViewer.v15.2アセンブリを見つけて、それらのチェックボックスをアクティブにします。 。

しかし、Add Referenceにアクセスすると、言及されているアセンブリがどこにも見つからず、それらを「検索」してもアイテムが見つかりません...

includeがありませんか、またはこれらを使用するためにどこかまたは何かからいくつかのライブラリをインポートする必要がありますか?

私が試したもう1つは: http://www.codeproject.com/Articles/380019/Using-Adobe-Reader-in-a-WPF-app これは言う:

このコントロールをプロジェクトに追加すると、空白のキャンバスでWindowsフォームデザイナが開かれます。ツールボックスを開く必要があります(CTRL + W、X)。最初のステップとして、カスタムコントロール用の新しいタブを追加することをお勧めします。これは、ツールボックスのコンテキストメニューのオプションです。この新しいタブを展開して、コンテキストメニューから[項目を選択]を選択します。 [ツールボックスアイテムの選択]ダイアログが表示されたら、[COMコンポーネント]タブを選択し、[Adobe PDF Reader(これはAcroPDF.DLLをツールボックスに追加します)]を選択します。

しかし、私が話しているChoose Toolbox ItemsまたはCOM Componentsが見つからないようです...

誰も私に明確なチュートリアルを教えたり、WPFアプリケーションにPDFビューアを追加する方法を説明できますか?Visual Studio 2015を使用しています。

編集

以下を実行して、アプリケーションウィンドウ内にPDFファイルを表示しようとしました。

<Grid>を追加して、XAMLのGUIにPDF)を表示します。

<StackPanel>
    <Grid x:Name="browserHost" Height="300" Width="525" Margin="0,0,0,0"></Grid>
</StackPanel>

WebBrowserをC#の<Grid>に追加し、それをPDF表示したい場所:

        System.Windows.Controls.WebBrowser browser = new System.Windows.Controls.WebBrowser();

public MainWindow()
    {
        InitializeComponent();

        try
        {
            //browser.Navigate("C:\\...\\sample.pdf");
            browserHost.Children.Add(browser);

            //browser.Visible = true;
            browser.Navigate("C:\\...\\sample.pdf");
            browserHost.Opacity = 200;
        }catch(Exception e)
        {
            Console.WriteLine("browser is visible/ not: " + browserHost.Visibility);
        }
    }

    private void Window_Loaded_1(object sender, RoutedEventArgs e)
    {
        /*Create the interop Host control */
        //System.Windows.Forms.Integration.WindowsFormsHost Host = new System.Windows.Forms.Integration.WindowFormsHost();

        /*Create the MaskedTextBox control */
        //browser.Navigate("C:\\...\\sample.pdf");
        //Host.Child = browser;
        browserHost.Children.Add(browser);
    }

しかし、現在、アプリケーションを実行すると、ロードするとすぐに、追加したbrowserに次のようなページが表示されます。

Webページへのナビゲーションは取り消されました

ファイルを開くか保存するかを尋ねるダイアログボックスがポップアップします(sample.pdf-ブラウザに表示しようとしているもの)...

ファイルを表示するのではなく、ダウンロードしようとするのはなぜですか? browserをダウンロードしてファイルを表示する代わりに表示するにはどうすればよいですか?または、ここでSystem.Windows.Controls.WebBrowser以外のものを使用する必要がありますか?

10
Noble-Surfer

@NawedNabiZadaで既に示唆されているように、試みられた簡単な方法の1つは、埋め込みInternetExplorerを使用してAdobe PDF Reader ActiveXコントロール。したがって、Windows上で実行しており、Adobe PDF Readerインストール済み。

次に、次のコントロールを含むユーザーコントロール、ウィンドウなどを作成します。

<WebBrowser x:Name="pdfWebViewer"></WebBrowser>

コンストラクターで、空白のページに移動します。

pdfWebViewer.Navigate(new Uri("about:blank"));

PDFドキュメントをそのコントロールに読み込むには、次の簡単なコードを使用します。

pdfWebViewer.Navigate(fullPathToPDF);

このアプローチは、SAPクライアントを含むWPFアプリだけでなく、多くのWindowsソフトウェアで使用されていますが、隠れた問題があります。 この質問 を参照してください。

これを機能させるには、Internet ExplorerのAdobe PDF Reader Addonを有効にする必要があります。AcrobatReader XIにはさまざまな問題があり、DCバージョン。 Adobeを有効にするPDF IE設定、アドオンに移動し、Adobeを見つけるPDF Readerおよび有効にする(AR XIおよび上記)。

私にとって、これはリンクしたコードプロジェクトの記事と比較して好ましい方法でした。

11
Vojtěch Dohnal

これに出くわし、WebBrowserを使用するよりも少しだけ制御が必要な場合:Windows 10 APIを使用して独自のPDFビューアを作成するのは非常に簡単です。私は blog その方法については、その上に署名(署名)するなど、他の機能を簡単に追加できます。

コードは github で入手できます。

ただし、非常に高度な機能の場合は、おそらくこれらの高価なライブラリのいずれかが必要になります。

7
LanderV

cefsharp Webブラウザでも可能です。

pDFの埋め込みモジュールが含まれているため、Acrobat-Readerやその他のActiveXは必要ありません。

WPFでGet-Started CefSharp

3
dovid

WPF pdfビューアでは、 http://pdfprinting.net/ を使用できます

1
user2038221