Frage

Irgendwelche Ideen, wie man eine PDF-Datei in einer WPF-Windows-Anwendung anzeigt?


Ich verwende den folgenden Code, um den Browser auszuführen, aber der Browser.Navigate Methode macht nichts!

WebBrowser browser = new WebBrowser();
browser.Navigate("http://www.google.com");
this.AddChild(browser); // this is the System.Windows.Window
War es hilfreich?

Lösung

Oops. dies ist für eine WinForms-Anwendung. Nicht für WPF. Ich werde diese sowieso veröffentlichen.

try this

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;

Andere Tipps

Sie können den Acrobat Reader Steuerung arbeitet in einer WPF-Anwendung erhalten, indem die WindowsFormHost Steuerung. Ich habe eine Blog-Post über es hier:

http: // hugeonion .com / 2009/04/06 / Anzeigen-a-pdf-file-in-a-wpf-application /

Ich habe auch ein 5 Minuten Screencasts, wie ich es gemacht hier:

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

Sie könnten einfach ein Web-Browser-Steuerelement auf dem Formular Host und es verwenden, um das PDF zu öffnen.

Es gibt eine neue native WPF "WebBrowser" -Steuerung in .NET 3.51 oder Sie können den Windows.Forms Browser in Ihrer WPF-Anwendung hosten.

Der folgende Code erwartet Adobe Reader installiert werden und die PDF-Erweiterung mit dieser verbunden werden. Es läuft einfach es:

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

Verwenden Sie einfach einen Rahmen und einen Web-Browser wie so

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

Dann, wenn Sie es nicht brauchen mehr tun dies es aufzuräumen:

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

Wenn Sie reinigen Sie es nicht bis dann könnten Sie Speicherleck Probleme abhängig von der Version von .NET Ihre Verwendung haben. Ich sah schlecht Speicherlecks in .NET 3.5, wenn ich nicht aufzuräumen.

Disclosure: Hier ist ein kommerzieller und ich für dieses Unternehmen zu arbeiten.

Ich weiß, dass eine Antwort bereits akzeptiert wurde, aber die folgenden nicht Adobe Reader / Acrobat benötigen und es ist eine WPF-Lösung - wie zu WinForms gegenüber. Ich weiß, auch dies eine alte Frage, aber es ist gerade aktualisiert, so ich denke, es ist immer noch aktuell ist.

PDFRasterizer.NET 3.0 können Sie eine WPF FixedDocument machen. Es bewahrt alle Vektorgrafiken (PDF Grafiken auf mehr oder weniger gleichwertig WPF-Elemente umgewandelt werden. Dies ist wahrscheinlich am nächsten, was Sie benötigen.

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

Sie können die wpfDoc passieren z.B. die WPF Documentviewer, um schnell einen Betrachter zu implementieren.

Sie können auch FoxitReader verwenden. Es ist kostenlos und kommt mit einem ActiveX-Steuerelement, das in dem Web-Browser (IE und andere) registriert, nachdem Sie die FoxitReader Anwendung installieren. So, nachdem Sie FoxitReader auf dem System setzte ein WebBrowser-Steuerelement installieren und stellen Sie die Source-Eigenschaft auf den Dateipfad Ihrer PDF-Datei zu verweisen.

Check this out: http://itextsharp.sourceforge.net/ Sie können eine Windows verwenden, aber da es Open Source ist, können Sie es in WPF ein wenig eleganter machen können.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top