Net Core教程

C# VSTO 在Word中将 EQ域、EQ公式域 转为图片

本文主要是介绍C# VSTO 在Word中将 EQ域、EQ公式域 转为图片,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

C# VSTO  Word EQ域 EQ公式域 转为 图片

C# VSTO  Word EQ域 EQ公式 转为 图片

C# VSTO  Word EQ域 公式域 转为 图片

 

我们知道我们正常插入的公式为Office公式,操作方式为:

 

 

 

在Word里面有一种特殊的东西叫“域”,他可以是,目录,公式,时间.....

这里是创建eq域的方法

 

 

 

需求:将eq域转为图片

代码:

       ///// <summary>
        /////公式域保存为图片
        ///// </summary>
        public static void SaveImg(Document Doc)
        {
            foreach (Microsoft.Office.Interop.Word.Field fld in Doc.Fields)
            {
                //这里可以得到域的类型是不是eq域在进行下面的操作,不然所以的都转换了
                //int sta = fld.Code.Start;
                //var aa = fld.Code;

                //域的左右范围+1才能转为图片
                var nRange = Doc.Range(fld.Code.Start - 1, fld.Code.Start + 1);

                //将图片去除白边
                var img = QueItemRange.CutImageWhitePart(nRange.ToImageStream());
                string path = Path.GetFullPath(Path.GetRandomFileName().Replace(".", "") + ".png");
                img.Save(path, System.Drawing.Imaging.ImageFormat.Png);

                //插入到文档中
                var ii = nRange.AddPicture(path);
                //段落,图片比文字高80%(这里没有调好,可以直接调)
                //var ph = fld.Code.Paragraphs.First.LineSpacing*1.8;
                //var ip = ii.Height/ ph;
                //暂定写死图片大小
                ii.ScaleHeight = 14;
                ii.ScaleWidth = 16;

                //删除域
                fld.Code.Text = "";
                File.Delete(path);
            }
        }

备注:

图片去除白边(QueItemRange.CutImageWhitePart)可以看我的另外的博客 https://www.cnblogs.com/ping9719/p/11416176.html

 

测试 MS Office 和 WPS Office 都ok

ms会完全没有问题,

但是wps在后续使用中可能Range会有一定的变化,需要使用者注意一下。

 

完成

 

这篇关于C# VSTO 在Word中将 EQ域、EQ公式域 转为图片的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!