Отображение 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
Ответы
Ответ 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();
Ответ 5
Попробуйте MoonPdfPanel - A WPF-based PDF viewer control
http://www.codeproject.com/Articles/579878/MoonPdfPanel-A-WPF-based-PDF-viewer-control
GitHub: https://github.com/reliak/moonpdf
Ответ 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.