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 = 0; i < count; i++)
            {
                var imagefile = System.IO.Path.Combine(savedirectory, i + ".jpg");

                PageInfo pageInfo = doc.GetPageInfo(i);
                var size = pageInfo.GetSizeInPixels(1, 96);
                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, 0, 0, width, height);
                        doc.RenderToSize(i, gr, 0, 0, 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;
        }

    }
}

时间: 2024-08-11 07:42:01

WPF解析Word为图片的相关文章

WPF循环加载图片导致内存溢出的解决办法

程序场景:一系列的图片,从第一张到最后一张依次加载图片,形成"动画". 生成BitmapImage的方法有多种: 1. var source=new BitmapImage(new Uri("图片路径",UriKind.xxx)); 一般的场景使用这种方法还是比较方便快捷,但是对于本场景,内存恐怕得爆. 2. var data =File.ReadAllBytes("图片路径"); var ms = new System.IO.MemoryStr

C# word 转图片 PDF 转图片

word转图片使用的Aspose组件,Aspose.word.dll  public bool Word2Png(string docFile, string pngDir, out int pngCount)         {             ImageSaveOptions options = new ImageSaveOptions(SaveFormat.Png);             options.Resolution = 300;             options

FreeMark对导出Word中图片的处理

当导出的Word中带有图片时,我们可以创建一个带有图片的word模板,并将其保存成xml文档.此时我们能看到这样一段代码: <w:binData w:name="wordml://03000001.png" xml:space="preserve">iVBORw0KGgo...此处省略base64编码...AASUVORK5CYIJ=</w:binData> <#--用于声明图片的base64编码,并对其命名 --><v:

iText导出pdf、word、图片

一.前言 在企业的信息系统中,报表处理一直占比较重要的作用,本文将介绍一种生成PDF报表的Java组件--iText.通过在服务器端使用Jsp或JavaBean生成PDF报表,客户端采用超级连接显示或下载得到生成的报表,这样就很好的解决了B/S系统的报表处理问题. 二.iText简介 iText是著名的开放源码的站点sourceforge一个项目,是用于生成PDF文档的一个java类库.通过iText不仅可以生成PDF或rtf的文档,而且可以将XML.Html文件转化为PDF文件. iText的

office 2007 word 插入图片没有显示

office 2007 word 插入图片没有显示 插入后如下,在word中显示 然后我们选中照片,双击后,发现菜单栏就改变了,如下 然后选择点击 文字环绕就可以了,自己再调整.

Android 使用Jsoup解析html+下载图片

最近想鼓捣一下CSDN客户端,这篇博客主要介绍如何使用Jsoup解析html页面通过标签获取所需内容,并下载指定图片资源. 一.导入Jsoup JAR包 JAR包下载地址:jsoup 1.6.1 注意导入包到项目时,直接将解压后的jar文件全部复制到libs文件目录下即可,否则运行时会报错. 二.下载html页面并解析 代码: package com.example.testcsdn; import java.io.ByteArrayOutputStream; import java.io.IO

linux,centos,php,word转图片方法

刚开始的时候是客户的活儿,真的是没有想到,被这样一个方法给卡住了,真是醉了,经过漫长的一周,终于搞定了这个问题,以下就来给大家介绍以下这个方法把.能方便大家. (直接转换没办法,所以找了个折中的办法,先转成pdf文件,然后再将pdf转图片) 先说一下环境的安装(我也是经历了好几次失败才总结出环境的安装的,*表示必须的操作,如果是大神,那么请绕道) [注]代码部分应该是由于我自己写的样式影响的有的看不见,用鼠标拖一下就能看见 服务器环境:centos7 *集成环境:宝塔 安装完宝塔后,选择安装LN

php解析word,获得文档中的图片

word文档的两种存储格式:doc和docx doc:习惯上被称为word,采用二进制存储数据 docx:也就是word2007,采用xml存储数据 那么后缀明明是docx格式的,为什么成xml格式了? ... 你认为的docx文档,其实是一个压缩文件~ 具体转这篇博文: https://www.cnblogs.com/lishanlei/p/9283974.html 原文地址:https://www.cnblogs.com/xiangsj/p/11619480.html

Word、图片、txt都支持转换的PDF转换软件

找一个好的PDF转换器就是在节省自己的时间.相信大家都有过这样的经验:好不容易找到了一些好点的 资料,但却基于格式的问题而停滞不前.因为普通的办公软件,如office就是打不开PDF文件的.这时候 我们需要的就是一个比较好用的PDF在线转JPG图片转换器了. 由于我们经常需要转换的PDF文件内容并不相同,而不同的PDF文件内容对于不同的PDF识别技术将造成巨 大的困难,因此如何将PDF有效地进行转换,成为目前大部分用户关注的问题之一. 下面主要介绍迅捷PDF转JPG图片转换器的特色功能. 灵活多