偶遇需要解析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为图片的更多相关文章

  1. WPF解析PPT为图片

    偶遇需要解析 PPT为单张图片 其中,对于包含动画的PPT页,分别对动画最后效果进行截取,即每个连续动画截取 (动画N个)N+1(原图)张 http://git.oschina.net/jiailiu ...

  2. WPF解析PDF为图片

    偶遇需要解析PDF文件为单张图,此做, http://git.oschina.net/jiailiuyan/OfficeDecoder using System; using System.Colle ...

  3. Java解析word,获取文档中图片位置

    前言(背景介绍): Apache POI是Apache基金会下一个开源的项目,用来处理office系列的文档,能够创建和解析word.excel.ppt格式的文档. 其中对word文档的处理有两个技术 ...

  4. Java解析word文档

    背景 在互联网教育行业,做内容相关的项目经常碰到的一个问题就是如何解析word文档. 因为系统如果无法智能的解析word,那么就只能通过其他方式手动录入word内容,效率低下,而且人工成本和录入出错率 ...

  5. 解析word公式的解决方案(office插入和wps插入不同的解决方案)

    这几天在公司的项目有个需求就是数学公式的导入,而对于word来说,插入的公式xml格式,需要转换为mathML,借用插件MathJax来进行展示,而对于wps插入的公式来说,获取到的是一个wmf图片, ...

  6. ueditor粘贴word中图片

    最近公司做项目需要实现一个功能,在网页富文本编辑器中实现粘贴Word图文的功能. 我们在网站中使用的Web编辑器比较多,都是根据用户需求来选择的.目前还没有固定哪一个编辑器 有时候用的是UEditor ...

  7. WORD粘贴图片+DEDE

    自动导入Word图片,或者粘贴Word内容时自动上传所有的图片,并且最终保留Word样式,这应该是Web编辑器里面最基本的一个需求功能了.一般情况下我们将Word内容粘贴到Web编辑器(富文本编辑器) ...

  8. word粘贴图片到ekitor

    最近公司做项目需要实现一个功能,在网页富文本编辑器中实现粘贴Word图文的功能. 我们在网站中使用的Web编辑器比较多,都是根据用户需求来选择的.目前还没有固定哪一个编辑器 有时候用的是UEditor ...

  9. word粘贴图片到ckeitor

    在之前在工作中遇到在富文本编辑器中粘贴图片不能展示的问题,于是各种网上扒拉,终于找到解决方案,在这里感谢一下知乎中众大神以及TheViper. 通过知乎提供的思路找到粘贴的原理,通过TheViper找 ...

随机推荐

  1. OGNL 对象视图导航语言

    [Object Graphics Navigate Language] 类似于EL(Expression Language)表达式, 可以帮助我们在配置文件.JSP中来获取对象的值 这门语言比EL功能 ...

  2. 移动开发Html 5前端性能优化指南

    详细内容请点击 PC优化手段在Mobile侧同样适用在Mobile侧我们提出三秒种渲染完成首屏指标基于第二点,首屏加载3秒完成或使用Loading基于联通3G网络平均338KB/s(2.71Mb/s) ...

  3. ASP.Net 获取当前时间,包含各种时间格式

    在c# / ASP.net中我们可以通过使用DataTime这个类来获取当前的时间.通过调用类中的各种方法我们可以获取不同的时间:如:日期(2008-09-04).时间(12:12:12).日期+时间 ...

  4. 【Linux C中文函数手册】之 目录操作函数

    目录操作函数 1)closedir 关闭目录 相关函数: opendir表头文件: #include<sys/types.h> #include<dirent.h>定义函数: ...

  5. 滚动视图和页面控制UIScollView,UIpageControlDemo

    ////  ViewController.m//  UIScollView////  Created by hehe on 15/9/25.//  Copyright (c) 2015年 wang.h ...

  6. 【学习笔记】【C语言】自增自减

    1. 简单使用 ++  自增运算符.如a++,++a,都等价于a = a+1 --自减运算符.如a--,--a,都等价于a = a-1 5++是错误的,因为5是常量 2. ++a和a++的区别 int ...

  7. MVC 上传图片的解决方案

    为了避免冲突,分两步来引用nuget第一步为项目安装nuget: Install-Package Backload Install-Package jQuery.FileUpload 分别引用,安装后 ...

  8. UI6_UIAlertContrller

    // // ViewController.m // UI6_UIAlertContrller // // Created by zhangxueming on 15/7/7. // Copyright ...

  9. 15个最新加速 Web 开发的框架和工具

    我们为开发人员挑选了15个最新的 Web 开发框架,你肯定尝试一下这些新鲜的框架,有的可能略微复杂,有的提供了很多的配置选项,也有一些窗口小部件和界面交互的选择.他们将帮助你创建更优秀的网站,提供给用 ...

  10. android 数据库中的事务_银行转账示例

    主java package com.itheima.transtation; import com.itheima.transtation.db.BankOpenHelper; import andr ...