WPF 加载PDF文件
需要打开PDF文件时,我们第一印象就是使用Adobe Reader。在开发中,经常会遇到需要展示PDF文件的需求。我们会借助于Adobe Reader的Active控件来实现。不过这需要客户的机器上安装有Adobe Reader,并且使用Adobe Reader的Active控件会在顶部有一个隐藏不了的工具栏。这样显然不合理。
在Github上看到一个非常好的WPF中承载PDF文件的类库。
https://github.com/reliak/moonpdf
使用非常简单,本篇博客将介绍使用MoonPdf类库来展示PDF文件。在Sourceforge上下载到MoonPdf编译好的Dll。下面通过一个WPF程序来演示,
1. 工程中添加对MoonPdfLib.dll的引用,另外记得将libmupdf.dll放置于WPF工程Bin文件下。
2. 代码:
XAML:
<Window x:Class="WPFPdfViewer.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"xmlns:mpp="clr-namespace:MoonPdfLib;assembly=MoonPdfLib"xmlns:local="clr-namespace:WPFPdfViewer"mc:Ignorable="d"Title="WPF Pdf Viewer" Height="350" Width="525"><Grid><Grid.RowDefinitions><RowDefinition Height="Auto"/><RowDefinition Height="*"/></Grid.RowDefinitions><Border Background="#f0f0f0"><StackPanel HorizontalAlignment="Left" Orientation="Horizontal"><Button Content="文件" Width="50" Click="FileButton_Click" Margin="5,5"/><Button Content="放大" Width="50" Click="ZoomInButton_Click" Margin="0,5"/><Button Content="缩小" Width="50" Click="ZoomOutButton_Click" Margin="5,5"/><Button Content="100%" Width="50" Click="NormalButton_Click" Margin="0,5"/><Button Content="整页" Width="50" Click="FitToHeightButton_Click" Margin="5,5"/><Button Content="单页" Width="50" Click="SinglePageButton_Click" Margin="0,5"/><Button Content="双页" Width="50" Click="FacingButton_Click" Margin="5,5"/></StackPanel></Border><Border Background="#d3d3d3" Grid.Row="1"><mpp:MoonPdfPanel x:Name="moonPdfPanel" Background="LightGray" ViewType="SinglePage" PageRowDisplay="ContinuousPageRows" PageMargin="0,2,4,2" AllowDrop="True"/></Border></Grid>
</Window>
前台代码:
public partial class MainWindow : Window{private bool _isLoaded = false;public MainWindow(){InitializeComponent();}private void FileButton_Click(object sender, RoutedEventArgs e){var dialog = new OpenFileDialog();if (dialog.ShowDialog().GetValueOrDefault()){string filePath = dialog.FileName;try{moonPdfPanel.OpenFile(filePath);_isLoaded = true;}catch (Exception){_isLoaded = false;}}}private void ZoomInButton_Click(object sender, RoutedEventArgs e){if(_isLoaded){moonPdfPanel.ZoomIn();}}private void ZoomOutButton_Click(object sender, RoutedEventArgs e){if(_isLoaded){moonPdfPanel.ZoomOut();}}private void NormalButton_Click(object sender, RoutedEventArgs e){if(_isLoaded){moonPdfPanel.Zoom(1.0);}}private void FitToHeightButton_Click(object sender, RoutedEventArgs e){moonPdfPanel.ZoomToHeight();}private void FacingButton_Click(object sender, RoutedEventArgs e){moonPdfPanel.ViewType = MoonPdfLib.ViewType.Facing;}private void SinglePageButton_Click(object sender, RoutedEventArgs e){moonPdfPanel.ViewType = MoonPdfLib.ViewType.SinglePage;}}
MoonPdf的原理是将Pdf文件转成了图片文件,然后再显示出来的。MoonPdf的开发者在CodePlex上的这篇文章介绍了MoonPdf了,非常不错。
在这里,感谢Yang-Fei的博客。
WPF 加载PDF文件相关推荐
- Android 加载pdf文件
今天来总结一下加载pdf文件. 加载pdf有好多办法, 一:使用webview来加载. mWebView.loadUrl("http://docs.google.com/gviewembed ...
- iframe加载pdf支持android,如何检查iframe是否已完全加载PDF文件
如何在iframe加载PDF文件时显示加载指示符?如何检查iframe是否已完全加载PDF文件 在我部分工作的解决方案中,我执行以下操作:当模式对话框(其中包含iframe)打开时,会显示一个加载指示 ...
- android 上传pdf文件,Android 加载PDF文件
今天按项目要求找了一个android的PDF控件,各种操作效果都非常好,在这里和大家分享一下. 用法很简单: 1.在build.gradle里面添加依赖 compile 'com.github.bar ...
- android 使用pdf文件大小,Android 加载PDF文件的使用
https://www.jianshu.com/p/608b270a1ab8 1.1 PDF View的使用 首先我们需要加载依赖库 compile 'com.joanzapata.pdfview:a ...
- Unity3D 加载PDF文件以及简单的切换页面
优化:解决切换pdf操作多崩溃问题: 在 rawImage.GetComponent<RawImage>().texture赋值前先删除之前的texture if ( rawImage.G ...
- html 加载pdf文件内容不显示不出来,pdf.js首次加载pdf文件时找不到pdf文件,刷新后才能出现pdf文件...
前台点击文件学码的定一近,更工广款近,更工广款近,更名后,后台通过openoffice将doc文件转为pdf格式文件,然后存放在服务器tomcat'中,pdf.js首次加载服务器中tomcat中的转化 ...
- 使用 pdf.js 在网页中加载 pdf 文件
在网页中加载并显示PDF文件是最常见的业务需求.例如以下应用场景:(1)在电商网站上购物之后,下载电子发票之前先预览发票.(2)电子政务管理系统中查看发布的公文,公文文件一般是PDF格式的文件. 目前 ...
- Vue中怎么加载pdf文件
Vue预览pdf文件,我觉得pdfh5方式比较简洁,还有vue-pdf也可以,但是如果文件内容较多的话,vue-pdf就需要做分页处理,就麻烦了:接下来,想分享下我使用pdfh5的代码逻辑.如下:(注 ...
- iframe 加载pdf文件
使用iframe标签,给上高度.宽度,效果和用浏览器打开pdf文件一致.支持下载.打印等功能. <!DOCTYPE html> <html lang="en"&g ...
- .net使用pdfobject.js加载pdf文件
1.下载pdfobject.js文件 2. 1 <script type="text/javascript" src="<%= Application[&qu ...
最新文章
- 倒计时 3 天!「2019 嵌入式智能国际大会」全日程大公开!
- Science:亚硝酸盐氧化细菌在黑暗海洋中的主要作用
- 【Android 安全】DEX 加密 ( Application 替换 | 分析 ContentProvider 组件中调用 getApplication() 获取的 Application 二 )
- mysql5.7 首次登陆_mysql5.7.20第一次登录失败的快速解决方法
- java convexhull_图像上划凸多边形(convexHull()函数)
- html div画三角,css画三角形
- 论文中引用的标注方法
- Spring 配置文件加载原理
- commons-logging中无法寻找log4j
- AES加密算法介绍与实现
- 期望之后的失望-小评侯捷的《Word排版艺术》
- 汇编语言指令大全(详细)
- 如何使用摸瓜快速查手机apk加壳
- ecshop常见漏洞
- 英尺 厘米_在35,000英尺处重建747
- 计算机连接公用网络受限,电脑连接无线网络受限怎么解决【解决方法】
- 【web全景】web全景实现方案(转载)
- leetcode: 每个元音包含偶数次的最长字符串(前缀和 + 状态压缩(位运算、hash优化))*
- linux造字程序,巧借“系统工具”,完成仓颉造字
- 怎样学好软件工程专业!!!
热门文章
- 装系统:主分区、扩展分区、逻辑分区,引导(启动)分区、系统分区、活动分区
- Windows Server 2016域控服务器如何取消密码复杂性规则
- 这次跟大家聊聊技术,也聊聊人生
- Golang interface接口深入理解
- JDK7官方下载地址
- 文件的文件名翻译重命名技巧操作
- 计算机关机键 自动重启,电脑关机后自动重启怎么办?原因及解决方详解
- and no properties discovered to create BeanSerializer 问题解决
- linux c第四天———gcc、gdb、指针、大小端存储
- Mac 电脑系统重装(详细流程,包含 Intel、Apple M系列)