Domanda

Tutte le idee su come visualizzare un file PDF in una Applicazione Windows WPF?


Sto utilizzando il codice riportato di seguito per eseguire il browser, ma il Browser.Navigate metodo non fare nulla!

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

Soluzione

Oops.questo è per winforms app.Non per WPF.Io posto questo comunque.

prova questo

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;

Altri suggerimenti

È possibile ottenere l'Acrobat Reader controllo in un'applicazione WPF utilizzando il WindowsFormHost di controllo.Ho un blog post su di esso qui:

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

Ho anche un 5 minuti di screencast di come ho fatto qui:

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

Si potrebbe semplicemente ospitare un Web Browser di controllo sulla forma e l'uso di esso per aprire il PDF.

C'è un nativo di WPF "WebBrowser" di controllo in .NET 3.51, o si potrebbe host Windows.Forme browser nella tua applicazione WPF.

Il codice riportato di seguito si aspetta di Adobe Reader per essere installato e l'estensione Pdf per essere collegato a questo.Semplicemente esegue:

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

Basta usare un telaio e di un browser web così come

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

Poi, quando non hai più bisogno di fare questo per pulire:

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

Se non pulirlo, allora si potrebbe avere problemi di perdita di memoria a seconda della versione .NET il vostro uso.Ho visto male perdite di memoria in .NET 3.5 se non la pulizia.

Divulgazione:Qui è un commerciale e io lavoro per questa azienda.

Mi rendo conto che una risposta è già stata accettata, ma il seguito non richiede Adobe Reader/Acrobat ed è un WPF soluzione - contro il Winforms.Mi rendo anche conto che questo è un vecchio problema, ma è stato appena aggiornato, quindi credo che sia ancora attuale.

PDFRasterizer.NET 3.0 consente di eseguire il rendering di un WPF FixedDocument.Conserva tutte vector graphics (grafica PDF vengono convertiti più o meno equivalente elementi WPF.Questo è probabilmente più vicino a ciò di cui avete bisogno.

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

È possibile passare il wpfDoc per es.WPF DocumentViewer di implementare rapidamente un visualizzatore.

È inoltre possibile utilizzare FoxitReader.E ' gratuito e viene fornito con un controllo ActiveX che si registra nel web browser (IE e altri) dopo aver installato il FoxitReader applicazione.Quindi, dopo aver installato FoxitReader il sistema di mettere un Controllo WebBrowser e impostare la proprietà Origine a scegliere il percorso del file del file PDF.

Check this out: http://itextsharp.sourceforge.net/ Potrebbe essere necessario utilizzare un WindowsFormsHost, ma dal momento che è open source, si potrebbe essere in grado di rendere un po ' più elegante in WPF.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top