一起谈.NET技术,WPF 浏览PDF 文件
2011-09-02 00:20
513 查看
很长时间没写文章感觉手有点生了,前段时间忙的要死公事、家事、私事,事事操心。还好现在有些时间可以继续写博客了。本篇将为大家演示如何在WPF 程序中浏览PDF 文件,本例将通过Adobe PDF Reader COM 组件、WinForm 与WPF 集成方面的工具实现PDF 浏览功能。
在工具箱里选择添加组件,在COM 组件列表中点选“Adobe PDF Reader”。
AcroPDFLib 和AxAcroPDFLib 库会自动添加到项目中。
添加成功后会在工具箱里看到下图所示的控件。
将该COM 控件拖入User Control 。
控件默认名称为:axAcroPDF1,可按需要自行更改。
Dock属性设置为“Fill”,这样可以使控件自动适应窗口尺寸。
打开控件程序,修改构造函数。将PDF 文件传入控件并进行加载。
到此用户控件就基本完成了,下面开始WPF 部分的开发。
打开XAML 在<Grid> 中添加Button 和WindowsFormsHost 控件,其中Button 用来启动文件目录窗口,从中选择要浏览的PDF文件;WindowsFormsHost 则用于嵌入WinForm 控件。
下面来完成Button 点击事件,将通过OpenFileDialog 选择的PDF 文件路径及名称传入AdobeReaderControl 用户控件中,并将该控件添加到WindowsFormsHost。
F5看下效果,点击“Open File” 选择一个PDF ,这样一个简单的WPF PDF Reader 就完成了。
用户控件
打开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
相关文章推荐
- 一起谈.NET技术,.NET的资源并不限于.resx文件,你可以采用任意存储形式 [上篇]
- 一起谈.NET技术,asp.net程序来读取多语言版本Ini配置文件
- WPF 浏览PDF 文件
- 一起谈.NET技术,Xml日志记录文件最优方案(附源代码)
- 一起谈.NET技术,.NET的资源并不限于.resx文件,你可以采用任意存储形式 [下篇]
- 一起谈.NET技术,探索Asp.net mvc 的文件上传(由浅入深)
- 一起谈.NET技术,WPF与混淆器
- 一起谈.NET技术,关于Windows Phone数据库和Silverlight本地文件操作
- 一起谈.NET技术,模拟IIS向Silverlight输出策略文件
- WPF 浏览PDF 文件
- 一起谈.NET技术,WPF 自定义快捷键命令(Command)
- 一起谈.NET技术,WCF使用NetTcp传输文件
- 一起谈.NET技术,WPF 企业内训全程实录(中)
- 一起谈.NET技术,将Flash 嵌入WPF 程序
- 一起谈.NET技术,VS 2010 和 .NET 4.0 系列之《干净的Web.Config文件 》篇
- 一起谈.NET技术,利用WPF建立自适应窗口大小布局的WinForm窗口
- 一起谈.NET技术,Microsoft Ribbon for WPF 正式发布
- 一起谈.NET技术,WPF 基础到企业应用系列4——WPF千年轮回
- 一起谈.NET技术,WPF 基础到企业应用系列2——WPF前世今生
- 一起谈.NET技术,WPF 扩展玻璃效果(Aero Glass)