在WPF应用程序中显示PDF

在WPF应用程序中显示PDF

Display a PDF in WPF Application

有什么想法如何在WPF Windows应用程序中显示PDF文件吗?

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

1
2
3
WebBrowser browser = new WebBrowser();
browser.Navigate("http://www.google.com");
this.AddChild(browser); // this is the System.Windows.Window

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

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

我还有一个5分钟的截屏视频,介绍了我在这里的制作过程:

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


您可以简单地在表单上托管一个Web浏览器控件,然后使用它打开PDF。

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


哎呀。这是用于winforms应用程序。不适合WPF。无论如何,我都会发布。

尝试这个

1
2
3
4
5
6
7
8
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;


尝试MoonPdfPanel - A WPF-based PDF viewer control
http://www.codeproject.com/Articles/579878/MoonPdfPanel-A-WPF-based-PDF-viewer-control

GitHub:https://github.com/reliak/moonpdf


以下代码要求安装Adobe Reader,并将Pdf扩展名与此连接。
它只是运行它:

1
2
3
4
5
String fileName ="FileName.pdf";
System.Diagnostics.Process process = new System.Diagnostics.Process();
process.StartInfo.FileName = fileName;
process.Start();
process.WaitForExit();

像这样使用框架和网络浏览器

1
2
3
4
Frame frame = new Frame();
WebBrowserbrowser = new WebBrowser();
browser.Navigate(new Uri(filename));
frame.Content = browser;

然后,当您不再需要它时,请执行以下操作来清理它:

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

如果不清理它,则可能会出现内存泄漏问题,具体取决于所使用的.NET版本。如果不清理,我会在.NET 3.5中看到不良的内存泄漏。


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

我意识到答案已经被接受,但是以下内容不需要Adobe Reader / Acrobat,并且它是WPF解决方案-与Winforms相反。我也意识到这是一个老问题,但是它刚刚被更新,所以我认为它仍然是实际的。

PDFRasterizer.NET 3.0允许您渲染到WPF FixedDocument。它保留所有矢量图形(PDF图形转换为或多或少等效的WPF元素。这可能最接近您的需要。

1
2
3
4
5
6
7
8
9
10
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以快速实现查看器。


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


检查一下:http://itextsharp.sourceforge.net/
您可能必须使用WindowsFormsHost,但是由于它是开源的,因此您可以在WPF中使其更加优雅。


推荐阅读

    linux命令添加文件?

    linux命令添加文件?,工作,简介,数据,系统,文件,命令,操作,文件名,内容,终端,l

    linux编译时显示命令?

    linux编译时显示命令?,系统,基础,工具,代码,百度,下来,网上,命令,内核,文件,L

    linux进程运行命令?

    linux进程运行命令?,系统,工作,状态,地址,信息,进程,基础,命令,管理,软件,lin

    linux文件输入命令?

    linux文件输入命令?,工作,系统,地址,信息,工具,位置,命令,设备,发行,首开,lin

    文件备份命令linux?

    文件备份命令linux?,网站,系统,设备,文件,软件,网络,工具,环境,数据,地址,lin

    linux遍历文件命令?

    linux遍历文件命令?,系统,数据,工具,文件,平台,信息,百度,位置,时间,适当,lin

    linux命令查看小文件?

    linux命令查看小文件?,系统,档案,文件夹,标准,软件,单位,文件,命令,大小,内

    linux文件中剪切命令?

    linux文件中剪切命令?,位置,系统,工作,命令,发行,连续,标准,终端,文件,目录,l

    linux存储文件命令?

    linux存储文件命令?,系统,地址,工作,命令,软件,电脑,标准,底部,信息,文件,lin

    linux保存命令文件?

    linux保存命令文件?,系统,状态,命令,文件,第一,管理,电脑,模式,编辑,终端,lin

    linux私有文件命令?

    linux私有文件命令?,系统,工作,工具,命令,设备,文件,目录,位置,不了,情况,Lin

    linux安装浏览器命令?

    linux安装浏览器命令?,官网,系统,平台,网站,管理,设备,咨询,工具,官方网站,

    删除linux文件命令?

    删除linux文件命令?,名称,不了,文件夹,命令,文件,目录,方法,指令,子目录,选

    linux文件录入命令?

    linux文件录入命令?,系统,命令,网络,标准,时间,密码,名字,管理,文件,文件夹,L

    文件复制命令linux?

    文件复制命令linux?,系统,地址,文件,目录,位置,工具,命令,目标,文件名,源文

    linux显示运行命令?

    linux显示运行命令?,系统,服务,状态,信息,工具,数据,电脑,标准,管理,时间,如

    linux命令移除文件夹?

    linux命令移除文件夹?,命令,文件夹,通用,不了,数据,名称,档案,系统,文件,目

    linux文件倒序命令?

    linux文件倒序命令?,地址,工作,管理,标准,命令,基础,系统,数据,最新,代码,lin

    linux运行vim命令?

    linux运行vim命令?,系统,工具,官方网站,模式,基础,数据,代码,环境,入口,命令

    在linux文件后加命令?

    在linux文件后加命令?,系统,工作,命令,工具,电脑,基础,管理,情况,第一,简介,L