WPF解析Word为图片
偶遇需要解析Word为单张图,此做
http://git.oschina.net/jiailiuyan/OfficeDecoder
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Text;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using Aspose.Words.Rendering; namespace Helpers
{
public static class WordHelper
{ /// <summary> 获取 Word 每一页的高度 此项获得整个页面</summary>
/// <param name="pageinfo"></param>
/// <returns></returns>
private static int GetWordHeight(PageInfo pageinfo)
{
var flag = BindingFlags.NonPublic | BindingFlags.Instance;
// 经过反编译看到 Word 中 PageInfo 的高度属性被混淆为 Int32_1
var pageheight = pageinfo.GetType().GetProperty("Int32_1", flag);
if (pageheight != null)
{
var height = pageheight.GetValue(pageinfo, null);
if (height != null)
{
return (int)height;
}
} return (int)pageinfo.WidthInPoints;
} /// <summary> 获取 Word 每一页的宽度 此项获得整个页面 </summary>
/// <param name="pageinfo"></param>
/// <returns></returns>
private static int GetWordWidth(PageInfo pageinfo)
{
var flag = BindingFlags.NonPublic | BindingFlags.Instance;
// 经过反编译看到 Word 中 PageInfo 的宽度属性被混淆为 Int32_0
var pagewidth = pageinfo.GetType().GetProperty("Int32_0", flag);
if (pagewidth != null)
{
var width = pagewidth.GetValue(pageinfo, null);
if (width != null)
{
return (int)width;
}
} return (int)pageinfo.WidthInPoints;
} /// <summary> 转换 Word 的每一页为图片 </summary>
/// <param name="wordfile"></param>
/// <param name="savedirectory"></param>
/// <returns></returns>
public static List<string> ConvertToImages(string wordfile, string savedirectory = "")
{
// 返回的图片绝对路径集合
List<string> images = new List<string>(); // 获取 Word 文件名称
var wordname = System.IO.Path.GetFileNameWithoutExtension(wordfile); // 如果指定了保存路径,则使用传入的路径,否则在 Word 文件的同级创建同名文件夹当作保存路径
savedirectory = string.IsNullOrWhiteSpace(savedirectory) ? System.IO.Path.GetDirectoryName(wordfile) : savedirectory;
savedirectory = System.IO.Path.Combine(savedirectory, wordname);
// 防止保存的路径不存在因此创建保存文件夹
Directory.CreateDirectory(savedirectory); var doc = new Aspose.Words.Document(wordfile); int count = doc.PageCount;
// Aspose.Word 的单页获取索引从 0 开始
for (int i = ; i < count; i++)
{
var imagefile = System.IO.Path.Combine(savedirectory, i + ".jpg"); PageInfo pageInfo = doc.GetPageInfo(i);
var size = pageInfo.GetSizeInPixels(, );
int width = size.Width;
int height = size.Height; using (var img = new Bitmap(width, height))
{
using (var gr = Graphics.FromImage(img))
{
gr.TextRenderingHint = TextRenderingHint.AntiAliasGridFit;
gr.FillRectangle(System.Drawing.Brushes.White, , , width, height);
doc.RenderToSize(i, gr, , , width, height);
} // 生成图像
img.Save(imagefile);
images.Add(imagefile);
}
} return images;
} /// <summary> 把 Word 转换为 Pdf </summary>
/// <param name="wordfile"></param>
/// <param name="pdffile"></param>
/// <returns></returns>
public static bool ConvertWordToPdf(string wordfile, string pdffile)
{
try
{
var doc = new Aspose.Words.Document(wordfile);
doc.Save(pdffile, Aspose.Words.SaveFormat.Pdf);
return true;
}
catch { }
return false;
} }
}
WPF解析Word为图片的更多相关文章
- WPF解析PPT为图片
偶遇需要解析 PPT为单张图片 其中,对于包含动画的PPT页,分别对动画最后效果进行截取,即每个连续动画截取 (动画N个)N+1(原图)张 http://git.oschina.net/jiailiu ...
- WPF解析PDF为图片
偶遇需要解析PDF文件为单张图,此做, http://git.oschina.net/jiailiuyan/OfficeDecoder using System; using System.Colle ...
- Java解析word,获取文档中图片位置
前言(背景介绍): Apache POI是Apache基金会下一个开源的项目,用来处理office系列的文档,能够创建和解析word.excel.ppt格式的文档. 其中对word文档的处理有两个技术 ...
- Java解析word文档
背景 在互联网教育行业,做内容相关的项目经常碰到的一个问题就是如何解析word文档. 因为系统如果无法智能的解析word,那么就只能通过其他方式手动录入word内容,效率低下,而且人工成本和录入出错率 ...
- 解析word公式的解决方案(office插入和wps插入不同的解决方案)
这几天在公司的项目有个需求就是数学公式的导入,而对于word来说,插入的公式xml格式,需要转换为mathML,借用插件MathJax来进行展示,而对于wps插入的公式来说,获取到的是一个wmf图片, ...
- ueditor粘贴word中图片
最近公司做项目需要实现一个功能,在网页富文本编辑器中实现粘贴Word图文的功能. 我们在网站中使用的Web编辑器比较多,都是根据用户需求来选择的.目前还没有固定哪一个编辑器 有时候用的是UEditor ...
- WORD粘贴图片+DEDE
自动导入Word图片,或者粘贴Word内容时自动上传所有的图片,并且最终保留Word样式,这应该是Web编辑器里面最基本的一个需求功能了.一般情况下我们将Word内容粘贴到Web编辑器(富文本编辑器) ...
- word粘贴图片到ekitor
最近公司做项目需要实现一个功能,在网页富文本编辑器中实现粘贴Word图文的功能. 我们在网站中使用的Web编辑器比较多,都是根据用户需求来选择的.目前还没有固定哪一个编辑器 有时候用的是UEditor ...
- word粘贴图片到ckeitor
在之前在工作中遇到在富文本编辑器中粘贴图片不能展示的问题,于是各种网上扒拉,终于找到解决方案,在这里感谢一下知乎中众大神以及TheViper. 通过知乎提供的思路找到粘贴的原理,通过TheViper找 ...
随机推荐
- css子元素的margin-top为何会影响父元素
详细内容请点击 这个问题困惑了很久,虽然没有大碍早就摸出来怎么搞定它,但始终不明白原因出在哪里,如果只是IE有问题我也不会太在意,可问题是所有上等浏览器都表现如此,这样叫我怎能安心?今天总算下狠心查出 ...
- .net导出Word的一种方法
由于ActiveX控件只支持IE(好像FF可以通过安装插件支持),所以js导出word的方式就比较局限 可是如果当页面经过js修改以后,.net是无法获取到的,所以要通过js获取到最新的html并传给 ...
- XAML
XAML定义 XAML是一种相对简单.通用的声明式编程语言,它适合于构建和初始化.NET对象. XAML仅仅是一种使用.NET API的方式,把它与HTML.可伸缩向量图形(SVG)或其他特定领域的格 ...
- JavaScript之点击文字放大
function box(){ document.getElementById("click").style.WebkitTransform="scale(1.2)&qu ...
- 番外篇 之 C#委托
对于上一节 番外篇之C#多线程的反思 反思一: Thread th = new Thread(参数); ////参数的总结 ////首先,第一情况,对于 Thread th = new Threa ...
- XAPI(XenAPI)
转载:http://www.cnblogs.com/dkblog/archive/2011/07/07/2099885.html 初识toolstack--XEN的XenServer管理的核心 什 ...
- ASP.NET发布WebService
1. 创建一个空的Web应用程序 2. 再添加一个Web服务 3. 在所创建Web服务内,编写一算法 4. 写完可直接运行查看结果 5. 项目->右键,发布此WebService 6. 发布至 ...
- OpenStack 控制台不能不能访问的问题
经过一个多月断断续续的OpenStack部署,今天终于搞定基本的云环境部署,linux.Windows虚拟机都可以正常运行!虽然期间遇到了N多的坑,在自己不断学习,不断找E文的过程中都逐一被我攻破,但 ...
- 安装MySQL软件
安装MySQL软件(绿色版) ① 解压软件包 ② 更改文件夹名称为mysql并复制到/usr/local文件夹下 ③ 使用cd指令进入/usr/local/mysql文件夹,使用ls –l查看 查看后 ...
- hdu 2544 最短路 Dijkstra
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2544 题目分析:比较简单的最短路算法应用.题目告知起点与终点的位置,以及各路口之间路径到达所需的时间, ...