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找 ...
随机推荐
- JS辨别浏览器系统IOS或安卓
详细内容请点击 /* * 智能机浏览器版本信息: * */ (function($,window,document){ $.extend({ browser:{ ...
- 如何提高手机APP的用户体验?
详细内容请点击 随着移动互联网如日中天,如火如荼的时候,手机APP开发日益高涨了起来,关于手机APP的用户体验,也是一个老话长谈的话题.从事这行业也很久了,以下是我个人在工作中的一些关于APP的用户体 ...
- Oracle学习笔记4 使用Navicat for Oracle 连接Oracle时出现错误:ORA-28547: connection to server failed, probable Oracle Net admin error
出问题到的机器环境: Oracle 11gR2 64bit Navicat for Oracle 11.0.10 根据网上一些大神的做法及个人的一些推测,总结如下: 问题出现的原因:Navicat与O ...
- Android 联系人字母排序(仿微信)
现在很多APP只要涉及到联系人的界面,几乎都会采取字母排序以及导航的方式.作为程序猿,这种已经普及的需求还是需要学习的,于是小生开始了在网上默默的学习之路,网上学习的资料质量参差不齐,不过也有很不错的 ...
- codevs1011 数的计算 2001年NOIP全国联赛普及组
题目描述 Description 我们要求找出具有下列性质数的个数(包含输入的自然数n): 先输入一个自然数n(n<=1000),然后对此自然数按照如下方法进行处理: 1. 不 ...
- 让项目管理理论“落地”——读《IT项目经理成长手记》有感
最近利用业余时间阅读了一本好书--<IT项目经理成长手记>(潘东.韩秋泉著).本书的两位作者是神州数码(中国本土最大的整合IT服务提供商)的高管,在书中他们介绍了神州数码在IT项目管理领域 ...
- IOS小知识纪录
1.scrollView缩放 #import "ViewController.h" @interface ViewController () <UIScrollViewDel ...
- Server.UrlEncode、HttpUtility.UrlDecode的区别
Server.UrlEncode.HttpUtility.UrlDecode的区别 在对URL进行编码时,该用哪一个?这两都使用上有什么区别吗? 测试: string file="文件上(传 ...
- ApplicationContext的应用场景
1.上一节中我们了解了IoC容器建立的基本步骤.理解这些步骤之后,可以很方便地通过编程的方式来手工控制这些配置和容器的建立过程了. 2.但是,在Spring中,系统已经为用户提供了许多已经定义好的容器 ...
- JS运动学习笔记 -- 任意值的运动框架(高/宽度,背景颜色,文本内容,透明度等)
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...