Отображение PDF-файла в приложении WPF [закрыто]

StackOverflow https://stackoverflow.com/questions/55083

  •  09-06-2019
  •  | 
  •  

Вопрос

Есть идеи, как отобразить PDF-файл в приложении WPF для Windows?


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

WebBrowser browser = new WebBrowser();
browser.Navigate("http://www.google.com");
this.AddChild(browser); // this is the System.Windows.Window
Это было полезно?

Решение

Упс.это для приложения 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;

Другие советы

Вы можете заставить элемент управления 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

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

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

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

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

Попробуй MoonPdfPanel - A WPF-based PDF viewer control http://www.codeproject.com/Articles/579878/MoonPdfPanel-A-WPF-based-PDF-viewer-control

ГитХаб: https://github.com/reliak/moonpdf

Просто используйте фрейм и веб-браузер следующим образом

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, если я их не почистил.

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

Я понимаю, что ответ уже принят, но для следующего не требуется 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 для быстрого внедрения средства просмотра.

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top