Добавление средства просмотра PDF в приложение WPF

я новичок в WPF и пытаюсь добавить средство просмотра PDF в мое приложение WPF, но, похоже, не могу понять, как это сделать... Я попытался следовать нескольким учебникам / примерам, которые я нашел в интернете, но они, похоже, не работают для меня по разным причинам...

например, я пробовал следующие учебник в: https://documentation.devexpress.com/#WPF/CustomDocument114328 чтобы добавить PDF Viewer во время разработки-он говорит

перетащите PdfViewerControl из DX.15.2: вкладка Data & Analytics Toolbox и поместите ее в Главное окно

однако у меня, похоже, нет Data & Analytics вкладка в панели инструментов... есть Data tab, но это просто такие элементы, как указатель, диаграмма, ListView и т. д. Есть ли что-то, что мне нужно сделать, чтобы добавить/ включить Data & Analytics панель инструментов в Visual Studio?

я попытался следовать учебнику на: https://documentation.devexpress.com/#WPF/CustomDocument114329 чтобы добавить PDF Viewer через код - он говорит

откройте Обозреватель решений, щелкните правой кнопкой мыши ссылки и выберите Добавить ссылку... чтобы добавить библиотеку просмотра PDF.

затем найдите DevExpress.Данные.программы V15.2, частое.Документ pdf.программы V15.2.Core, DevExpress.Французский тихоокеанский франк.DocumentViewer.программы V15.2.Core и DevExpress.Французский тихоокеанский франк.PdfViewer.v15.2 сборки и активировать их проверку ящики.

но когда я иду в Add Reference, Я не могу найти сборки, которые он упоминает в любом месте, и если я " ищу " их, никакие элементы не найдены...

я пропускаю include, или мне нужно импортировать некоторые библиотеки откуда-то или что-то, чтобы использовать их?

еще один, который я пробовал:http://www.codeproject.com/Articles/380019/Using-Adobe-Reader-in-a-WPF-app который говорит:

после этого элемент управления добавляется в проект, Конструктор Windows Forms должен быть открыт с пустым холстом. Вам нужно будет открыть окно инструментов (CTRL + W, X). В качестве первого шага рекомендуется добавить новую вкладку для пользовательских элементов управления - это опция из контекстного меню панели инструментов. При этом новая вкладка развернута, выберите "выбрать элементы" в контекстном меню. Когда появится диалоговое окно выбор элементов панели инструментов, выберите вкладку компоненты COM и выберите Adobe PDF Reader (это добавит AcroPDF.DLL в инструментальный ящик.)

но я не могу найти Choose Toolbox Items или COM Components он говорит...

может ли кто-нибудь указать мне более ясный учебник или объяснить, как я мог бы добавить средство просмотра PDF в свое приложение WPF? Я использую Visual Studio 2015.

редактировать

я попытался отобразить PDF-файл в окне приложения, выполнив следующие действия:

добавлять <Grid> для отображения PDF в GUI в XAML:

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

добавлять WebBrowser до <Grid> в C# и указывая на местоположение 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 что я добавил к нему отображает страницу, которая говорит:

навигация к веб-странице была отменена

и появляется диалоговое окно с вопросом, Хочу ли я открыть или сохранить файл (sample.pdf - тот, кто я попытка отображения в браузере)...

почему он пытается загрузить файл, а не отображать его? Как я могу получить browser для отображения файла вместо того, чтобы пытаться загрузить его? Или я должен использовать что-то другое, кроме System.Windows.Controls.WebBrowser здесь?

4 ответов


как уже предлагал @NawedNabiZada, один из попробованных и простых способов-использовать встроенный InternetExplorer, чтобы показать Adobe PDF Reader элемент управления ActiveX. Поэтому предполагается, что вы работаете на Windows и Adobe PDF Reader установлен.

затем вы создаете пользовательский элемент управления, окно и т. д. который содержит следующий элемент управления:

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

в конструкторе перейдите к пустой странице:

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

чтобы загрузить PDF-документ в этот элемент управления, используйте этот простой код:

pdfWebViewer.Navigate(fullPathToPDF);

этот подход используется многими приложениями Windows не только WPF, включая SAP client, но и имеет скрытую проблему, см. этот вопрос.

для этого необходимо включить аддон Adobe PDF Reader в Internet Explorer. Существуют различные проблемы с Acrobat Reader XI, лучше использовать версию DC. Чтобы включить Adobe PDF перейдите в настройки IE, надстройки и найдите Adobe PDF Reader и включите его (AR XI и выше).

для меня это было предпочтительный способ по сравнению со статьей проекта кода, которую вы связали.


Это также возможно с помощью cefsharp Веб-Браузер.

Он включает встроенные модули для PDF, поэтому вам не нужен Acrobat-Reader или любой другой ActiveX.

начало работы CefSharp в WPF


для тех, кто натыкается на это, и нуждается в немного больше контроля, чем с WebBrowser: это довольно легко сделать свой собственный просмотрщик PDF с Windows 10 API. Я написал блог о том, как это сделать. Вы можете легко добавить к нему другие функции, такие как рисование сверху (подпись) и так далее.

код доступен на сайте github.

однако для супер продвинутых функций вам, вероятно, понадобится один из этих дорогих библиотеки.


для просмотра WPF pdf вы можете использовать http://pdfprinting.net/