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找 ...
随机推荐
- SimpleDateFormat 相关用法
parse(String s)返回的是一个Date类型数据,format(Date d)返回的是一个String类型的数据 SimpleDateFormat sd = new SimpleDateFo ...
- Java之姐妹素数
所谓素数就是指相邻两个奇数均为素数, 判断一个数是否为素数的基本方法是:(以n=5为例) package com.cdp.SuShu; public class sushujisuan { publi ...
- Java之累加和
所谓累加算法,就是数学中数列求的算法,这都是司空见惯了的.下面我们用java求: package com.cdp.leijiahe; import java.util.Scanner; public ...
- Windows SDK 之 Hook的使用
在使用SetWindowsHookEx的过程中遇到的问题 函数原型 HHOOK WINAPI SetWindowsHookEx( _In_ int idHook, _In_ HOOKPROC lpfn ...
- 2015-0306—DataLList
DataList具有repeater的所有功能,不同的是DataList自动将模板绘制成为一个表格,每一行数据都绘制成<tr>. 一.SQL的准备工作: 按照以下代码创建: create ...
- linux交叉编译裁剪内核记录
刚开始学习嵌入式内核编译,因为要修改内核的默认配置,因此这里把自己的学习记录写下来,方便以后查阅,也给别人一个参考,有什么写的不对的或者更好的方法,请指正~ 开发板有usb从口,现在想要让开发板作为一 ...
- (转)集成架构:对比 Web API 与面向服务的架构和企业应用程序集成
摘要:总体上讲,SOA 和 Web API 似乎解决的是同一个问题:以实时的.可重用的方式公开业务功能.本教程将分析这些举措有何不同,以及如何将它们融入到一个不断演变的集成架构中.文中还将讨论 API ...
- (转)分布式缓存GemFire架构介绍
1什么是GemFire GemFire是一个位于应用集群和后端数据源之间的高性能.分布式的操作数据(operational data)管理基础架构.它提供了低延迟.高吞吐量的数据共享和事件分发.Gem ...
- IPv6协议介绍
IPv6是为了解决基于IPv4的TCP/IP协议簇遇到的问题而推出的下一代IP协议.由于IPv4中采用的编制方式使得可用的网络地址和主机地址的数目远低于理论数目,随着全球互联网的快速发展,现有的IPv ...
- netstat监控大量ESTABLISHED连接与Time_Wait连接问题(转载)
问题描述: 在不考虑系统负载.CPU.内存等情况下,netstat监控大量ESTABLISHED连接与Time_Wait连接. # netstat -n | awk '/^tcp/ {++y[$NF] ...