Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在WPF应用程序中显示PDF_Wpf_Pdf - Fatal编程技术网

在WPF应用程序中显示PDF

在WPF应用程序中显示PDF,wpf,pdf,Wpf,Pdf,你知道如何在WPF Windows应用程序中显示PDF文件吗 我正在使用以下代码运行浏览器,但是browser.Navigate方法没有任何作用 WebBrowser browser = new WebBrowser(); browser.Navigate("http://www.google.com"); this.AddChild(browser); // this is the System.Windows.Window 看看这个: 您可能必须使用WindowsFormsHost,但由

你知道如何在WPF Windows应用程序中显示PDF文件吗


我正在使用以下代码运行浏览器,但是
browser.Navigate
方法没有任何作用

WebBrowser browser = new WebBrowser();
browser.Navigate("http://www.google.com");
this.AddChild(browser); // this is the System.Windows.Window
看看这个:
您可能必须使用WindowsFormsHost,但由于它是开源的,因此您可以在WPF中使其更加优雅。

您只需在表单上承载一个Web浏览器控件,并使用它打开PDF即可


在.NET 3.51中有一个新的本机WPF“WebBrowser”控件,或者您可以在WPF应用程序中托管Windows.Forms浏览器。

Oops。这是针对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;

下面的代码要求安装Adobe Reader并将Pdf扩展连接到此服务器。 它只是运行它:

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

您可以使用WindowsFormHost控件使Acrobat Reader控件在WPF应用程序中工作。我在这里有一篇关于它的博文:

我还有一个5分钟的视频,讲述了我是如何在这里取得成功的:


只需像这样使用一个框架和一个网络浏览器

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版本。如果我没有清理,我在.NET3.5中看到了坏内存泄漏。

您也可以使用FoxitReader。它是免费的,并且附带一个ActiveX控件,在安装FoxitReader应用程序后,该控件将在web浏览器(IE和其他浏览器)中注册。
因此,在系统上安装FoxitReader后,请放置WebBrowser控件,并将其源属性设置为指向PDF文件的文件路径。

Try
MoonPdfPanel-一个基于WPF的PDF查看器控件


GitHub:

披露:这是一个商业网站,我在这家公司工作

我知道答案已经被接受了,但以下内容不需要AdobeReader/Acrobat,它是一个WPF解决方案,而不是Winforms。我也意识到这是一个老问题,但它刚刚更新,所以我猜它仍然是实际的

允许您渲染到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等,以快速实现查看器。

即使用户系统上没有安装Acrobat reader,此功能是否有效?注意:如果您的应用程序已构建为64位应用程序,则此功能将不起作用。您必须强制将应用程序构建为32位应用程序。(如果尝试使用WPF中的WindowsFormHost控件执行此操作,则存在相同的问题)这是否需要在最终用户的计算机上安装Acrobat Reader?在这种情况下,最终用户需要安装某种PDF Reader软件并在IE上注册。我建议使用Foxit Reader而不是Adobe,它速度更快且不安装间谍软件。+1;目前为止最简单的解决方案:
+1这是最简单的,2016年将进行一次令人惊叹的更新,I d我不再推荐Foxit了(它现在已经膨胀了),我使用苏门答腊pdf。但是Windows 10 Edge browser现在具有内置的pdf支持,因此在Windows上安装任何第三部分pdf软件很可能不需要它。是否要在WPF中显示pdf?是在Acrobat中外部启动,还是需要设计时控件在应用程序内部显示?而不是
WebBrowser
control,我已经并使用了WPF的
DocumentViewer
控件进行显示。iText是一个很好的工具,但它不支持呈现PDF。我在执行相同操作时出错
无法加载文件或程序集“Interop.AcroPDFLib,Version=1.0.0,Culture=neutral,PublicKeyToken=null”或其依赖项之一。系统无法找到指定的文件。
非常好,谢谢我使用了它,它很有效!非常感谢您与社区共享此文件。希望所有答案都是视频格式的!:)指向博客文章的链接已失效。@cheeesus look google为该项目添加了GitHub链接。请注意,MoonPDF将PDF页面显示为图像。如果要选择文本,这可能与此相关。