Подтвердить что ты не робот

Отображение PDF в приложении WPF

Любые идеи о том, как отображать PDF файл в приложении WPF Windows?


Я использую следующий код для запуска браузера, но метод Browser.Navigate ничего не делает!

WebBrowser browser = new WebBrowser();
browser.Navigate("http://www.google.com");
this.AddChild(browser); // this is the System.Windows.Window
4b9b3361

Ответ 1

К сожалению. это для приложения winforms. Не для WPF. Я все равно отправлю это сообщение.

попробуйте это

private AxAcroPDFLib.AxAcroPDF axAcroPDF1;
this.axAcroPDF1 = new AxAcroPDFLib.AxAcroPDF();
this.axAcroPDF1.Dock = System.Windows.Forms.DockStyle.Fill;
this.axAcroPDF1.Enabled = true;
this.axAcroPDF1.Name = "axAcroPDF1";
this.axAcroPDF1.OcxState = ((System.Windows.Forms.AxHost.State)(resources.GetObject("axAcroPDF1.OcxState")));
axAcroPDF1.LoadFile(DownloadedFullFileName);
axAcroPDF1.Visible = true;

Ответ 2

Вы можете получить элемент управления Acrobat Reader, работающий в приложении WPF, с помощью элемента управления WindowsFormHost. У меня есть сообщение в блоге об этом здесь:

http://hugeonion.com/2009/04/06/displaying-a-pdf-file-within-a-wpf-application/

У меня также есть 5-минутный скринкаст того, как я сделал это здесь:

http://www.screencast.com/t/JXRhGvzvB

Ответ 3

Вы можете просто разместить элемент управления веб-браузера в форме и использовать его для открытия PDF файла.

В .NET 3.51 есть новый собственный элемент управления "WebBrowser" WPF, или вы можете разместить браузер Windows.Forms в своем приложении WPF.

Ответ 4

В следующем коде предполагается, что Adobe Reader будет установлен, а расширение Pdf будет связано с этим. Он просто запускает его:

String fileName = "FileName.pdf";
System.Diagnostics.Process process = new System.Diagnostics.Process(); 
process.StartInfo.FileName = fileName;
process.Start();
process.WaitForExit();

Ответ 6

Просто используйте рамку и такой веб-браузер

Frame frame = new Frame();
WebBrowserbrowser = new WebBrowser();
browser.Navigate(new Uri(filename));
frame.Content = browser;

Тогда, когда вам это больше не нужно, сделайте это, чтобы очистить его:

WebBrowser browser = frame.Content as WebBrowser;
browser.Dispose();
frame.Content = null;

Если вы не очистите его, у вас могут возникнуть проблемы с утечкой памяти в зависимости от используемой вами версии .NET. Я видел плохие утечки памяти в .NET 3.5, если я не очистил.

Ответ 7

Раскрытие информации: Вот коммерческий, и я работаю в этой компании.

Я понимаю, что ответ уже принят, но следующее не требует Adobe Reader/Acrobat, и это решение WPF - в отличие от Winforms. Я также понимаю, что это старый вопрос, но он только что обновлен, поэтому я думаю, что он по-прежнему актуальен.

PDFRasterizer.NET 3.0 позволяет визуализировать документ WPF FixedDocument. Он сохраняет всю векторную графику (графики в формате PDF преобразуются в более или менее эквивалентные элементы WPF. Это, вероятно, ближе всего к тому, что вам нужно.

using (FileStream file = new FileStream(path, FileMode.Open, FileAccess.Read))
{
  pdfDoc = new Document(file);

  ConvertToWpfOptions convertOptions = new ConvertToWpfOptions();
  RenderSettings renderSettings = new RenderSettings();
  ...

  FixedDocument wpfDoc = pdfDoc.ConvertToWpf(renderSettings, convertOptions, 0, 9, summary);
}

Вы можете передать wpfDoc, например. WPF DocumentViewer быстро реализует средство просмотра.

Ответ 8

Вы также можете использовать FoxitReader. Он бесплатный и поставляется с элементом управления ActiveX, который регистрируется в веб-браузерах (IE и другие) после установки приложения FoxitReader. Поэтому после установки FoxitReader в систему поставьте элемент управления WebBrowser и установите его свойство Source, чтобы указать путь к файлу вашего файла PDF.

Ответ 9

Проверьте это: http://itextsharp.sourceforge.net/ Возможно, вам придется использовать WindowsFormsHost, но поскольку он является открытым исходным кодом, вы можете сделать его немного более элегантным в WPF.