zoukankan      html  css  js  c++  java
  • 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 部分的开发。

    由于要将上面的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 就完成了。

  • 相关阅读:
    挖地雷(类似数塔)
    拦截导弹简单版(读入一串整数时getline(cin,s) stringstream is(s);)
    拦截导弹简单版(读入一串整数时getline(cin,s) stringstream is(s);)
    拦截导弹加强版(最长递增/减子序列加强版)
    拦截导弹加强版(最长递增/减子序列加强版)
    最长上升子序列O(nlogn)算法详解
    最长上升子序列O(nlogn)算法详解
    第15届浙江省赛 E LIS
    第15届浙江省赛 E LIS
    C语言--循环结构
  • 原文地址:https://www.cnblogs.com/lqs888/p/7122108.html
Copyright © 2011-2022 走看看