Question

Des idées comment faire pour afficher un fichier PDF dans un WPF Application Windows?


J'utilise le code suivant pour exécuter le navigateur, mais le Browser.Navigate la méthode ne permet pas de faire n'importe quoi!

WebBrowser browser = new WebBrowser();
browser.Navigate("http://www.google.com");
this.AddChild(browser); // this is the System.Windows.Window
Était-ce utile?

La solution

Oups.c'est pour une application winforms.Pas pour WPF.Je vais poster quand même.

essayez ceci

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;

Autres conseils

Vous pouvez obtenir le logiciel Acrobat Reader de contrôle de travail dans une application WPF, à l'aide de la WindowsFormHost de contrôle.J'ai un blog sur le sujet ici:

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

J'ai aussi un 5 minutes de vidéo de démonstration de la façon dont je l'ai fait ici:

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

Vous pouvez simplement l'hôte d'un contrôle de Navigateur Web sur la forme et l'utiliser pour ouvrir le fichier PDF.

Il y a une nouvelle WPF natif "WebBrowser" contrôle .NET 3.51, ou vous pourriez hôte Windows.Les formulaires de navigateur dans votre application WPF.

Le code suivant s'attend Adobe Reader doit être installé et l'extension Pdf à être connectés à cet.Il fonctionne tout simplement ça:

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

Il suffit d'utiliser un cadre et d'un navigateur internet comme

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

Puis, quand vous en avez le plus besoin le faire pour le nettoyer:

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

Si vous n'avez pas le ménage, alors vous pourriez avoir les problèmes de mémoire selon la version de .NET votre aide.J'ai vu de mauvais fuites de mémoire dans .NET 3.5 si je n'ai pas nettoyer.

Divulgation:Voici un produit commercial, et je travaille pour cette société.

Je me rends compte que la réponse a déjà été accepté, mais le suivant ne nécessite pas Adobe Reader/Acrobat et c'est un WPF solution - par opposition à Winforms.Je me rends compte aussi c'est une vieille question, mais elle a juste été mis à jour donc je suppose que c'est toujours d'actualité.

PDFRasterizer.NET 3.0 vous permet de vous rendre à un WPF FixedDocument.Il conserve tous les graphiques vectoriels (PDF graphiques sont convertis plus ou moins l'équivalent des éléments WPF.C'est probablement le plus proche de ce dont vous avez besoin.

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);
}

Vous pouvez passer à la wpfDoc, par exempleWPF DocumentViewer de mettre en place rapidement un spectateur.

Vous pouvez également utiliser FoxitReader.Il est gratuit et est livré avec un contrôle ActiveX qui s'inscrit dans les navigateurs web (IE, et autres) après l'installation de la FoxitReader application.Si après l'installation de FoxitReader sur le système de Contrôle WebBrowser et définissez sa propriété Source pour pointer vers le chemin d'accès au fichier de votre fichier PDF.

Check this out: http://itextsharp.sourceforge.net/ Vous pourriez avoir à utiliser un WindowsFormsHost, mais comme il est open source, vous pourriez être en mesure de rendre un peu plus élégant dans WPF.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top