很长时间没写文章感觉手有点生了,前段时间忙的要死公事、家事、私事,事事操心。还好现在有些时间可以继续写博客了。本篇将为大家演示如何在WPF 程序中浏览PDF 文件,本例将通过Adobe PDF Reader COM 组件、WinForm 与WPF 集成方面的工具实现PDF 浏览功能。

用户控件

打开VS2010,新建项目(WpfPDFReader),右键项目添加User Control(用户控件)。因为Adobe PDF Reader COM 组件是不支持WPF的,为此我们需要将它放到WinForm 控件中。所以,在列表中需要选择User Control,而不是User Control(WPF)。这里我将控件命名为:AdobeReaderControl.cs。完成添加双击控件进入设计模式。

在工具箱里选择添加组件,在COM 组件列表中点选“Adobe PDF Reader”。

AcroPDFLib 和AxAcroPDFLib 库会自动添加到项目中。

添加成功后会在工具箱里看到下图所示的控件。

将该COM 控件拖入User Control 。

控件默认名称为:axAcroPDF1,可按需要自行更改。

Dock属性设置为“Fill”,这样可以使控件自动适应窗口尺寸。

打开控件程序,修改构造函数。将PDF 文件传入控件并进行加载。

using System.Windows.Forms;namespace WpfPDFReader
{public partial class AdobeReaderControl : UserControl{public AdobeReaderControl(string fileName){InitializeComponent();this.axAcroPDF1.LoadFile(fileName);}}
}

到此用户控件就基本完成了,下面开始WPF 部分的开发。

WPF

由于要将上面的WinForm 控件加载到WPF 程序中,所以先要为WPF 添加WindowsFormsIntegration。

打开XAML 在<Grid> 中添加Button 和WindowsFormsHost 控件,其中Button 用来启动文件目录窗口,从中选择要浏览的PDF文件;WindowsFormsHost 则用于嵌入WinForm 控件。

<Window x:Class="WpfPDFReader.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"Title="WPF PDF Reader" Height="350" Width="525"><Grid><Button Content="Open File" Click="Button_Click" Width="100" Height="30" VerticalContentAlignment="Center" VerticalAlignment="Top" Margin="0,10,0,0"/><WindowsFormsHost x:Name="winFormHost" Margin="0,46,0,0" /></Grid>
</Window>

下面来完成Button 点击事件,将通过OpenFileDialog 选择的PDF 文件路径及名称传入AdobeReaderControl 用户控件中,并将该控件添加到WindowsFormsHost。

private string openFileName;
private OpenFileDialog openFileDialog;private void Button_Click(object sender, RoutedEventArgs e)
{openFileDialog = new OpenFileDialog();openFileDialog.DefaultExt = "pdf";openFileDialog.Filter = "pdf files (*.pdf)|*.pdf";DialogResult result = openFileDialog.ShowDialog();if (result == System.Windows.Forms.DialogResult.OK){openFileName = openFileDialog.FileName;AdobeReaderControl pdfCtl = new AdobeReaderControl(openFileName);winFormHost.Child = pdfCtl;                }else{return;}
}

F5看下效果,点击“Open File” 选择一个PDF ,这样一个简单的WPF PDF Reader 就完成了。

源代码

WpfPDFReader.zip

本文转自Gnie博客园博客,原文链接:http://www.cnblogs.com/gnielee/archive/2010/11/16/wpf-pdf-reader.html,如需转载请自行联系原作者

WPF 浏览PDF 文件相关推荐

  1. 网站开发之ie下在线浏览pdf文件无需本地支持

    1.首先,务必通过后面给的链接了解一些可实现的方法:打开链接. 2.个人选择了PDFObject+PDF.js来实现,这里需要下载pdfobject.js和PDF.js.对于pdfobject.js, ...

  2. 微信小程序----微信小程序浏览pdf文件

    微信小程序----微信小程序浏览pdf文件 说明:通过wx.downloadFile,wx.openDocumen来实现打开pdf文件.只需在js操作即可. HTTP.Config.Request(' ...

  3. 微信公众号或者浏览器实现在线浏览pdf文件

    微信公众号或者浏览器实现在线浏览pdf文件 实现在线浏览pdf文件方法 开发步骤: 实现在线浏览pdf文件方法 我们在日常的开发当中经常需要实现pdf文件的显示,最近做了一个在微信公众号中实现pdf浏 ...

  4. h5页面预览pdf文件_H5移动端在线浏览pdf文件,推荐插件TouchPDF

    pdf.png 公共的pdf页面可以自己写,调用插件的代码也相对简单: seePDF.html seePDF.js $(function() { //文件服务器的路径 var picDownloadS ...

  5. html在线浏览pdf文件

    最近在做一个项目,其中涉及到pdf文件,于是就想试着在线加载pdf文件,经过我的不懈努力,终于让我解决了这个问题 解决这个问题总共有两种方式 方式一. 将pdf转为图片保存,然后再把图片的地址发到页面 ...

  6. 8个实现在线浏览PDF文件的实用jQuery插件

    在web开发当中我们经常需要进行需要在线浏览PDf内容,在线嵌入动态pdf,传统的解决方法安装客户端PDF阅读器,如果是在谷歌是可以在线浏览的,因为他自身就带了一些插件,以前遇到这样的问题往往是费时又 ...

  7. 在手机端浏览pdf文件,遇到的问题整理

    在起微信中预览文件 第一种方法: 直接使用a标签,将href属性的值赋为你想要展示的文件的路径地址. 我用自己的手机测试(android)时,主要要经过下面的流程 打开----->首先下载QQ浏 ...

  8. vue-cli使用pdf.js插件浏览pdf文件,禁止下载打印复制粘贴。

    很多项目中都会有预览pdf文件,普通的可以直接使用a标签来实现该功能,但是此预览是浏览器自带的,有时候项目需求中会有禁止用户禁止下载和打印功能,浏览器自带的是无法满足的. 小编在网上找到pdf.js插 ...

  9. html浏览pdf文件,HTML网页在线预览PDF文件

    image.png image.png 今日工作需要,需要在线预览PDF文件,so,做了个研究,下面将网页在线预览pdf的方法做个梳理,大家共同学习成长吧 方法分为三种 1. 方法1-embed标签 ...

最新文章

  1. 《javascript高级程序设计》笔记:变量对象与预解析
  2. 5.3.3 TCP可靠传输
  3. 微型计算机的内存主要包括rom,信息安全技术题库:路由器硬件组件主要包括( )、闪存、ROM、RAM。 - 作业在线问答...
  4. 测试人员面临的测试挑战和必备技能
  5. webpack从入门到精通(一)初体验
  6. Linux下用GDB调试程序崩溃错误
  7. js function如何传入参数未字符串_JavaScript 学习之路- JS 小测验
  8. oracle参数文件和口令文件
  9. WinDbg配置与下载 (转载)
  10. Ajax--WebService返回复杂二维数组
  11. Netflix的zuul使用
  12. 苹果注册2019款iPhone 预计今秋将发布3款11个版本
  13. 数据离散化之chimerge算法的实现(python版)(以莺尾花数据为例)
  14. Java基础学习笔记(二)_Java核心技术(进阶)
  15. php视频降清晰度,HTML5视频播放器-video-js(带清晰度切换) | 小灰灰博客
  16. source insight 4.0 使用make命令编译
  17. CSharpSCADA - 工控网关, 轻量级组态软件.
  18. 多线程爬虫爬取电影天堂资源
  19. rm -rfi 防止误删除数据
  20. python分析比赛_世界杯:用Python分析热门夺冠球队-(附源代码)

热门文章

  1. easyui数据表格显示复选框_WinCC 报警控件、在线趋势/表格控件数据查询
  2. mysql连接池失效_连接池隔天失效之异常处理
  3. 监控子进程,退出就重启进程 ,简单版本
  4. 更换ip软件安卓_2019十大手机读书软件排行榜
  5. Android 无法监听安装,Android关于apk安装成功广播监听
  6. mysql 可重复读 快照_MYSQL可重复读及原理、快照读和当前读
  7. 【 C 】字符串函数专题
  8. 『参考』使用.net CF自带库判断设备的连接状态
  9. Spring Boot相关知识(二) Spring Boot项目启动的执行顺序和原理
  10. Ajax实现的城市二级联动一