WPF 浏览PDF 文件

   很长时间没写文章感觉手有点生了,前段时间忙的要死公事、家事、私事,事事操心。还好现在有些时间可以继续写博客了。本篇将为大家演示如何在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。完成添加双击控件进入设计模式。

AddUserCtl

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

SelectCom

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

Reference

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

Toolbox

将该COM 控件拖入User Control 。

AddCom

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

ComName

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

Dock

打开控件程序,修改构造函数。将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。

WinForm.

     打开XAML 在 中添加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)
{
    penFileDialog = new OpenFileDialog();
    openFileDialog.DefaultExt = "pdf";
    openFileDialog.Filter = "pdf files (*.pdf)|*.pdf";

    DialogResult result = openFileDialog.ShowDialog();

    if (result == System.Windows.Forms.DialogResult.OK)
    {
        penFileName = openFileDialog.FileName;

        AdobeReaderControl pdfCtl = new AdobeReaderControl(openFileName);
        winFormHost.Child = pdfCtl;                
    }
    else
    {
        return;
    }
}

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

Reader

源代码

WpfPDFReader.zip
作者:李敬然(Gnie)
出处: {GnieTech} (http://www.cnblogs.com/gnielee/)

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12639172/viewspace-678323/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/12639172/viewspace-678323/

wpf经典教程 共83页 WPF体系结构........... 3 WPF应用程序管理... 5 一、WPF应用程序由System.Windows.Application类进行管理.................... 5 二、创建WPF应用程序......................................................... 5 三、应用程序关闭................................................................... 6 四、Application对象的事件.................................................... 7 五、WPF应用程序生存周期................................................... 9 WPF窗体................. 10 一、窗体类...... 10 1、XAML文件............................................................... 10 2、后台代码文件........................................................... 10 二、窗体的生存周期..............................................11 1、显示窗体.......................................................11 2、关闭窗体......................................................12 3、窗体的激活................................................... 12 4、窗体的生存周期............................................... 12 三、其他窗体相关的属性、方法、事件.............................. 15 四、定义异形窗体................................................ 16 StackPanel、WrapPanel、DockPanel 容器............................ 19 一、StackPanel 19 1、可以使用Orientation属性更改堆叠的顺序............ 19 2、设置控件的属性,调整控件的显示......................... 20 二、WrapPanel. 20 三、DockPanel. 21 Grid UniformGrid容器......................................... 22 一、Grid........... 22 二、使用GridSplit分割........................................................ 23 三、UniformGrid ............................................. 25 Canvas、InkCanvas布局................................ 27 一、Canvas ...... 27 二、InkCanvas . 27 WPF对控件其类型的继承方式如下............................................. 29 WPF控件内容模型. 32 一、ContentControl模型....................................... 35 二、HeaderedContentControl模型......................................... 36 三、ItemsControl模型....................................... 38 1、使用ItemSource属性................................................ 38 2、使用Items属性........................................................ 40 四、HeaderedItemsControl模型............................................. 42 Panel Decorator TextBlock内容模型............................ 44 一、Panel内容模型............................................ 44 二、Decorator内容模型........................................ 45 三、TextBlock模型........................................ 46 四、TextBox模型........................................... 49 依赖项属性和路由事件......................................... 50 一、依赖项属性(Dependency Property................................ 50 1、依赖项属性与CLR 包装属性.................................. 50 2、使用由依赖项属性提供的属性功能......................... 51 3、自定义依赖项属性及重写依赖项属性..................... 52 二、路由事件(RoutedEvent)............................................. 53 键盘输入、鼠标输入、焦点处理................................ 56 一、键盘类和键盘事件..................................... 56 二、鼠标类和鼠标事件...................................... 57 三、焦点处理.. 60 1、键盘焦点: ....................................... 60 2、逻辑焦点........................................... 61 3、键盘导航.............................................. 61 4、焦点事件.................................... 61 WPF命令................. 63 一、命令: ...... 64 二、命令源...... 65 三、命令目标.. 66 四、命令绑定.. 67 WPF资源................. 70 一、什么是资源............................................. 70 二、资源的定义及XAML中引用......................................... 70 三、XAML解析资源的顺序.................................................. 74 四、静态资源(StaticResource)和动态资源(DynamicResource) .............. 77 五、不同类型的资源............................................................. 81 1、程序集资源。........................................................... 81 2、对象资源................................................................... 82
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值