que - Muestre un PDF en la aplicación WPF
wpf vs windows forms (9)
¿Alguna idea de cómo mostrar un archivo PDF en una aplicación WPF de Windows?
Estoy usando el siguiente código para ejecutar el navegador, pero el método Browser.Navigate
no hace nada!
WebBrowser browser = new WebBrowser();
browser.Navigate("http://www.google.com");
this.AddChild(browser); // this is the System.Windows.Window
Divulgación: Aquí hay uno comercial y yo trabajo para esta compañía.
Me doy cuenta de que ya se ha aceptado una respuesta, pero lo siguiente no requiere Adobe Reader / Acrobat y es una solución de WPF, a diferencia de Winforms. También me doy cuenta de que esta es una vieja pregunta, pero acaba de ser actualizada, así que supongo que todavía es real.
PDFRasterizer.NET 3.0 le permite procesar en un WPF FixedDocument. Conserva todos los gráficos vectoriales (los gráficos PDF se convierten en elementos WPF más o menos equivalentes. Esto es probablemente lo más cercano a lo que necesita.
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);
}
Puede pasar el wpfDoc a, por ejemplo, el WPF DocumentViewer para implementar rápidamente un visor.
El siguiente código espera que Adobe Reader esté instalado y que la extensión Pdf esté conectada a esto. Simplemente lo ejecuta:
String fileName = "FileName.pdf";
System.Diagnostics.Process process = new System.Diagnostics.Process();
process.StartInfo.FileName = fileName;
process.Start();
process.WaitForExit();
Mira esto: http://itextsharp.sourceforge.net/ Puede que tengas que usar WindowsFormsHost, pero dado que es de código abierto, es posible que puedas hacerlo un poco más elegante en WPF.
Oops. esto es para una aplicación de winforms. No para WPF. Voy a publicar esto de todos modos.
prueba esto
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;
Pruebe MoonPdfPanel - A WPF-based PDF viewer control
http://www.codeproject.com/Articles/579878/MoonPdfPanel-A-WPF-based-PDF-viewer-control
Puede hacer que el control Acrobat Reader funcione en una aplicación WPF utilizando el control WindowsFormHost. Tengo una publicación en el blog aquí:
http://hugeonion.com/2009/04/06/displaying-a-pdf-file-within-a-wpf-application/
También tengo un screencast de 5 minutos de cómo lo hice aquí:
Simplemente puede alojar un control de navegador web en el formulario y usarlo para abrir el PDF.
Hay un nuevo control nativo WPF "WebBrowser" en .NET 3.51, o puede alojar el navegador Windows.Forms en su aplicación WPF.
Solo usa un marco y un navegador web como tal
Frame frame = new Frame();
WebBrowserbrowser = new WebBrowser();
browser.Navigate(new Uri(filename));
frame.Content = browser;
Luego, cuando ya no lo necesite, haga esto para limpiarlo:
WebBrowser browser = frame.Content as WebBrowser;
browser.Dispose();
frame.Content = null;
Si no lo limpia, puede tener problemas de pérdida de memoria dependiendo de la versión de .NET que esté usando. Vi filtraciones de memoria defectuosas en .NET 3.5 si no limpiaba.
También puedes usar FoxitReader. Es gratis y viene con un control ActiveX que se registra en los navegadores web (IE y otros) después de instalar la aplicación FoxitReader. Entonces, después de instalar FoxitReader en el sistema, ponga un Control WebBrowser y configure su propiedad Source para que apunte a la ruta del archivo de su archivo PDF.