using System;
using System.Diagnostics;
using System.Drawing;
using System.IO;
using System.Windows.Forms;
using MSWord = Microsoft.Office.Interop.Word;

namespace ConvertEquationToPng
{
    public partial class MainForm : Form
    {
        private MSWord.Application m_word;
        private MSWord.Document m_doc;

public MainForm()
        {
            InitializeComponent();
        }

private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                var processes = Process.GetProcessesByName("winword");
                foreach (var process in processes)
                {
                    process.Kill();
                }
            }
            catch (Exception)
            {

}
            m_word = new MSWord.Application();
            object filefullname =Application.StartupPath+@"\\845AD2AE-23C0-4AC4-AFE7-F832BD088673_ONLY_QUESTION.doc";
            var obj = Type.Missing;
            try
            {
                m_word.Documents.Open(ref filefullname,ref obj, ref obj, ref obj,ref obj, ref obj, ref obj,ref obj, ref obj,ref obj, ref obj, ref obj, ref obj,ref obj, ref obj, ref obj);
                m_word.Visible = false;

var document = m_word.Documents[1];

var count = 0;
                foreach (var c in document.Fields)
                {
                    count++;
                    var d = (MSWord.Field) c;
                    d.Copy();
                    d.Select();
                    m_word.Selection.PasteSpecial(Link: false, DisplayAsIcon: false,DataType: MSWord.WdPasteDataType.wdPasteEnhancedMetafile,Placement:MSWord.WdOLEPlacement.wdInLine);
                }
                var picPath =new DirectoryInfo("c:\\Pic");
                if (!picPath.Exists)
                {
                    picPath.Create();
                }
                var i = 0;
                for (var j=1;j<= document.InlineShapes.Count;j++)
                {
                    var ish = document.InlineShapes[j];

if (ish.Type == MSWord.WdInlineShapeType.wdInlineShapePicture)
                    {
                        ish.Select();
                        m_word.Selection.Copy();
                        var image = Clipboard.GetImage();
                        if (image != null)
                        {
                            var bitmap = new Bitmap(image);
                            var fi = new FileInfo(picPath +"\\"+ i + ".jpg");
                            var fiNew= new FileInfo(picPath + "\\"+ i + "_new.jpg");
                            bitmap.Save(fi.FullName);
                            Trim(fi.FullName, fiNew.FullName);
                            var img = Image.FromFile(fiNew.FullName);
                            Clipboard.SetDataObject(img);
                            ish.Delete();
                            m_word.Selection.Paste();
                        }
                        i++;
                    }
                }
                
                #region 关闭
                //避免弹出normal.dotm被使用的对话框,自动保存模板  
                m_word.NormalTemplate.Saved = true;

document.SaveAs("c:\\result.doc");
                //先关闭打开的文档(注意saveChanges选项)  
                Object saveChanges = MSWord.WdSaveOptions.wdDoNotSaveChanges;
                Object originalFormat = Type.Missing;
                Object routeDocument = Type.Missing;
                m_word.Documents.Close(ref saveChanges, ref originalFormat, ref routeDocument);

//若已经没有文档存在,则关闭应用程序  
                if (m_word.Documents.Count == 0)
                {
                    m_word.Quit(Type.Missing, Type.Missing, Type.Missing);
                }
                var r=MessageBox.Show("成功完成,请查看效果!","恭喜",MessageBoxButtons.OKCancel,MessageBoxIcon.Question);
                if (r == DialogResult.OK)
                {
                    var fileFullName = "c:\\result.doc";
                    var psi = new ProcessStartInfo("Explorer.exe")
                    {
                        Arguments = "/e,/select," + fileFullName
                    };
                    Process.Start(psi);
                }

#endregion
            }
            catch (System.Exception ex)
            {
                MessageBox.Show("打开Word文档出错:"+ex);
            }
        }

public static void Trim(string sourceFileName, string targetFileName)
        {
            CommonUtil.ExecCommand(@"C:\Program Files\ImageMagick-6.9.3-Q16\convert.exe", sourceFileName + " -transparent white -trim " + targetFileName);
        }
    }
}

处理eq问题的更多相关文章

  1. <c:if test="value ne, eq, lt, gt,...."> 用法

    类别 运算符 算术运算符 + . - . * . / (或 div )和 % (或 mod ) 关系运算符 == (或 eq ). != (或 ne ). < (或 lt ). > (或 ...

  2. jQuery中eq()方法用法实例

    本文实例讲述了jQuery中eq()方法用法.分享给大家供大家参考.具体分析如下: 此方法能够获取匹配元素集上的相应位置索引的元素. 匹配元素集上元素的位置索引是从0开始的. 语法结构: 复制代码 代 ...

  3. jqueyr eq get用法

    相信大部份人都会把这2个的用法搞错.仔细查看下API文档就可以知道.eq返回的是一个jquery对象,get返回的是一个html 对象数组.举个例子: <p style="color: ...

  4. JQ first-child与:first的区别以及nth-child(index)与eq(index)的区别

    1.first-child和:first区别 first-child  是指选取每个父元素的第一个子元素 如$("div:first-child")指每个父级里的第一个div孩子 ...

  5. jQuery.eq() 函数

    eq() 函数 获取当前对象中指定索引所对应的的元素 语法 $selector.eq(index)//index为指定索引,值为数字型 返回值 返回值为一个对象 实例说明 代码 <!DOCTYP ...

  6. jQuery的eq方法

    定义和用法eq() 方法将匹配元素集缩减值指定 index 上的一个. 语法.eq(index) 其中的index :整数,指示元素的位置(最小为 0).如果是负数,则从集合中的最后一个元素往回计数. ...

  7. jQuery原型方法first,last,eq,slice源码分析

    这4个方法中前3个方法很常用大家都见过,但是slice方法可能会以为是数组方法,其实slice也是jQuery的一个原型方法,只不过是底层方法是为其他方法服务的(更具体点是为eq方法服务的),首先还是 ...

  8. yourphp的eq作用

    <eq name="> <span style="color:#090">是</span> <else /> 否 < ...

  9. jQuery : eq() vs get()

    .get(index) and .eq(index) both return a single "element" from a jQuery object array, but ...

  10. JQUERY添加、删除元素、eq()方法;

    一.jQuery - 添加元素 1.append() - 在被选元素内部的结尾插入指定内容 2.prepend() - 在被选元素内部的开头插入指定内容 3.after() - 在被选元素之后插入内容 ...

随机推荐

  1. P1297 网线切割

    P1297 网线切割 题目描述 Wonderland居民决定举行一届地区性程序设计大赛.仲裁委员会志愿负责这次赛事并且保证会组织一次有史以来最公正的比赛.为此,所有参赛者的电脑和网络中心会以星状网络连 ...

  2. echart图表展示数据-简单的柱状图

    话不多说,先上几张效果图 给大家看看 1:echart所用到的文件包需要事先引入好具体可见 http://echarts.baidu.com/doc/start.html 2:本例中所有的数据都是通过 ...

  3. 如何在一个顶级域名下用两个二级域名访问vps下的两个项目网站--完美解决骗

    本人是原址是http://www.webzhe.com/server/340 后经过本人的实践修改,增加截图,等具体的步骤,完美解决 如何在vps中设置二级域名开通子网站,这个问题涉及到两步:一首先要 ...

  4. 《Cracking the Coding Interview》——第13章:C和C++——题目3

    2014-04-25 19:42 题目:C++中虚函数的工作原理? 解法:虚函数表?细节呢?要是懂汇编我就能钻的再深点了.我试着写了点测大小.打印指针地址之类的代码,能起点管中窥豹的作用,从编译器的外 ...

  5. phpStorm9.0 +xampp+chrome php调试环境配置!

    不多说,直接上step by step: 1.xampp配置 看看我的XAMPP版本: 修改配置文件,该打开打开,该加上加上,结果如下(当前需要重新启动apache,配置才会生效): [XDebug] ...

  6. Pytest 断言

    pytest 断言 断言:一个标准的用例都包含了断言,编写pytest自动化脚本的时候,也需要设置断言 assert使用 常用分三种 1:比较大小与是否相等 2:包含或不包含  3:验证boolean ...

  7. 孤荷凌寒自学python第二十一天初识python的类

    孤荷凌寒自学python第二十一天初识python的类 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 类是面向对象的编程语言非常重要的概念. 编程语言的进化史中从顺序编程到结构化编程,最后才 ...

  8. PEAR DB 初学笔记

    1.数据查询 i. DB_common::getAll() DB_FETCHMODE_ORDERED . DB_FETCHMODE_ASSOC . DB_FETCHMODE_OBJECT ii. DB ...

  9. Linux 查看当前日期和时间

    一.查看和修改Linux的时区 1. 查看当前时区 命令 : "date -R" 2. 修改设置Linux服务器时区 方法 A 命令 : "tzselect" ...

  10. POJ 3421 X-factor Chains | 数论

    题意: 给一个x,求最长的排列满足开头是1,结尾是x,前一个数是后一个数的因子 输出长度和这样序列的个数 题解: 把x分解质因数,质因数个数就是答案,接下来考虑怎么求个数 显然这是一个可重集合全排列问 ...