using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using WORD = Microsoft.Office.Interop.Word;
using System.IO;
using System.Windows.Forms;
using System.Drawing;

/// <summary>
    /// WORD文档进行图片转化。会用到Office的内置来实现

/// 【先转换成htm文件,在生成JPG图片。】
    /// </summary>
    public class ConvertWORD
    {
        <summary>
        /// 图片保存路径。System.IO.Path.GetTempPath() + @"cache\{0}.jpg"
        /// </summary>
        private static string SAVEWORDJPG = @"E:\cheng_Text\FormatApplication\测试文件\{0}.bmp";

/// <summary>
        /// 暂时网页保存文件路径。Path.GetTempPath() + @"cache\{0}.htm";
        /// </summary>
        private static string TEMPHTMLPATH = @"E:\cheng_Text\FormatApplication\测试文件\{0}.htm";

/// <summary>
        /// WORD文档转换为Bmp图片,
        /// </summary>
        /// <param name="wordPath">Word文件路径</param>
        /// <returns>图片的路径</returns>
        public static string WORDConvertImage(string wordPath)
        {
            WORD.Application App = null;
            object newObj = Type.Missing;
            try
            {

App = new Microsoft.Office.Interop.Word.Application();
                object saveChanges = Microsoft.Office.Interop.Word.WdSaveOptions.wdPromptToSaveChanges;
                object saveFormat = Microsoft.Office.Interop.Word.WdSaveFormat.wdFormatFilteredHTML;
                object saveHTML = string.Format(TEMPHTMLPATH, Guid.NewGuid().ToString());
                object filePath = wordPath as object;
                object wordOnly = true;
                TEMPHTMLPATH = saveHTML.ToString();
                WORD.Document wordDoc = App.Documents.Open(ref filePath, ref newObj, ref wordOnly, ref newObj, ref newObj, ref newObj, ref newObj, ref newObj, ref newObj, ref newObj, ref newObj, ref newObj, ref newObj, ref newObj, ref newObj, ref newObj);
                App.Visible = false;
                wordDoc.SaveAs(ref saveHTML, ref saveFormat, ref  newObj, ref  newObj, ref  newObj, ref  newObj, ref  newObj, ref  newObj, ref  newObj, ref  newObj, ref  newObj, ref  newObj, ref  newObj, ref  newObj, ref  newObj, ref  newObj);
                App.Documents.Close(ref newObj, ref newObj, ref newObj);

return ConverHTML(saveHTML.ToString());
            }
            catch (Exception WORDEx)
            {
                MessageBox.Show(WORDEx.ToString());
                return null;
            }
            finally
            {
                App.Quit(ref newObj, ref newObj, ref newObj);
            }
        }

/// <summary>
        /// 通过WebBrowser控件来实现从HTML到Bmp图片的生成。
        /// </summary>
        /// <param name="htmPath">HTML路径</param>
        /// <returns>Bmp图片路径</returns>
        private static string ConverHTML(string htmPath)
        {
            string ImagePath = string.Empty;
            WebBrowser web = new WebBrowser();
            web.Navigate(htmPath);
            web.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(web_DocumentCompleted);

//DeleteTempFile(TEMPHTMLPATH);
            return ImagePath;
        }

static void web_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
        {
            WebBrowser web = sender as WebBrowser;
            if (web.ReadyState == WebBrowserReadyState.Complete)
            {
                Rectangle rect = web.Document.Body.ScrollRectangle;
                web.Width = rect.Width + 100;
                web.Height = rect.Height + 50;
                while (web.ReadyState != WebBrowserReadyState.Complete)
                {
                    System.Windows.Forms.Application.DoEvents();
                }
                Bitmap bitmap = new Bitmap(web.Width, web.Height);
                web.DrawToBitmap(bitmap, new Rectangle(0, 0, web.Width, web.Height));

web.Dispose();
                SAVEWORDJPG = string.Format(@"E:\cheng_Text\FormatApplication\测试文件\{0}.bmp", Guid.NewGuid().ToString());
                bitmap.Save(SAVEWORDJPG, System.Drawing.Imaging.ImageFormat.Bmp);
                bitmap.Dispose();
                DeleteTempFile(TEMPHTMLPATH);
            }
        }

/// <summary>
        /// 删除指定的临时文件。
        /// </summary>
        /// <param name="filePath"></param>
        private static void DeleteTempFile(string filePath)
        {
            //删除临时HTML文件 。
            File.Delete(filePath);
            //删除目录文件内容。
            string dirPath = filePath.Split('.')[0] + ".files";
            foreach (string f in Directory.GetFileSystemEntries(dirPath))
            {
                // 如果是文件存在 
                if (File.Exists(f))
                {
                    FileInfo fi = new FileInfo(f);
                    if (fi.Attributes.ToString().IndexOf("Readonly") != 1)
                    {
                        fi.Attributes = FileAttributes.Normal;
                    }
                    // 直接删除其中的文件 
                    File.Delete(f);
                }
            }
            Directory.Delete(dirPath);
        }
    }

word实现转换成图片的实现相关推荐

  1. xml文件转换成图片_怎样能把PDF文件转换成图片?

    我们的日常生活工作中时常碰到pdf与Excel.Word.ppt和jpg等文件格式的转换,有时候由于工作的需要,要把PDF文件转换成图片.并且现在网上的很多素材都是PDF文件格式的,如果我们想要里面的 ...

  2. pdf文件怎么转换成图片?

    pdf文件怎么转换成图片?今天我要给大家分享一个日常经常用到的办公小技巧,就是pdf文件怎么转换成图片,上个星期我刚好有这么一个需求,老板要求我把一份有着几十页的pdf文件转换成图片给他,所以我也真的 ...

  3. pdf怎么转换成图片,pdf转图片教程

    pdf怎么转换成图片,pdf转图片教程! 我们知道pdf因其稳定,不易被编辑等特点是很多人喜欢的原因,但是若是pdf文档不能被灵活使用,那pdf文件的使用价值就会大大的受到限制.比如我们想把pdf转成 ...

  4. Acrobat如何将word文件转换成pdf格式

    很多朋友电脑装了Adobe Acrobat,却不知道Acrobat如何将word文件转换成pdf格式,现在就给大家讲解一下.比如,我们电脑安装Adobe Acrobat  Professional 7 ...

  5. python输出图片到word_python将文本转换成图片输出的方法

    本文实例讲述了python将文本转换成图片输出的方法.分享给大家供大家参考.具体实现方法如下: #-*- coding:utf-8 -*- from PIL import Image,ImageFon ...

  6. Word怎么转换成Excel?教你个轻松转换的方法

    说到Word文档,小伙伴们在工作中应该有经常使用到这种文档吧,虽然Word是文档格式,但是在其中也是可以做个数据统计图片功能的,如果需要一些文字标注想必很多人仍会使用Word,但是有些文档里的表格内容 ...

  7. word格式转换成pdf格式转换器

    对于许多人而言PDF文件并不陌生,它是一种通用的电子文档格式,具有良好的通用性和可读性,将Word转PDF文档可以很好地保存原件中的文字.图片.链接等.然而问题出现了,如何将Word转成PDF呢?其实 ...

  8. 用Python将word文件转换成html(转)

    用Python将word文件转换成html 序 最近公司一个客户大大购买了一堆医疗健康方面的科普文章,希望能放到我们正在开发的健康档案管理软件上.客户大大说,要智能推送!要掌握节奏!要深度学习!要让用 ...

  9. 怎么把pdf转换成图片?

    相信很多人都使用pdf文件,为了工作的方便,我们可以把pdf转换成图片来使用,也可以把图片转换成pdf来使用,同样可以将pdf跟其他文件相互转换着来使用.如果要想快速轻松的转换,那么就要在电脑上面下载 ...

最新文章

  1. 初学者易上手的SSH-hibernate04 一对一 一对多 多对多
  2. 2020-07-15 CVPR2020 表示学习论文讨论(4) 笔记
  3. boost::hana::is_subset用法的测试程序
  4. iptables--静态防火墙实例教程
  5. 因为我的名字特殊大家都是用异样的眼光在看着我 04
  6. Android画板控件,可以写字,签名,画画并生成图片
  7. Teamviewer 手机端怎么使用右键-已解决
  8. c语言随机产生四位数,习题:随机产生N个四位正整数,将其中的素数选出,并升序排列之输…...
  9. python监控网页内容变化_使用Python监控文件内容变化代码实例
  10. 干货!谷歌首席科学家发文阐述“半监督学习革命”,想走出瓶颈先试试这个...
  11. [20170612]FOR ALL COLUMNS SIZE repeat(11g).txt
  12. mysql 正则 换行符_MySQL 正则表达式
  13. 稳压器及稳压二极管型号对照表
  14. 原 《老路用得上的商学课》86-90学习笔记
  15. 【编程题训练】统计射击比赛成绩
  16. 用MATLAB绘制两个圆相切,教您用几何绘图工具画三个两两相切的圆
  17. 加码企业云原生进化,解读阿里云容器新品ACK Pro与ACK@Edge
  18. SQL DXP 6.6.x 高级版--最新版
  19. 200行Perl 语言实现 VCD 转ATE测试pattern ---pattern的解析
  20. 译言网、东西网创始人赵嘉敏访谈

热门文章

  1. vue-i18n的入门使用
  2. 包邮再送500份!我们自制了一张【数据分析知识鼠标垫】,抓紧领取
  3. (个体户)注册公众平台步骤
  4. 适合新手小白,一个人一部手机如何做自媒体?看完我的你就懂了
  5. 论文阅读(8)Cool your jets:海洋无脊椎动物的生物喷射推进(2021)
  6. ABB机器人的几种停止指令详解
  7. AutoCAD输入netload命令后不弹出菜单而是一直显示程序集文件名解决方案
  8. 解决虚拟专用网络拨号后本地上网流量都走此网络的问题
  9. 常见的状态码1xx、2xx、3xx、4xx、5xx、
  10. 【电气专业知识问答】问:什么叫组合电器?什么是GIS?