VSTO保存Word中选中的图片

现在正在开发一个VSTO Word插件,想要对选中的图片进行OCR识别。那么就需要把图片缓存到临时文件夹。从网上找了半天没找到解决方法,硬是用了两个AI(通义千问,文心一言)问了10次才拼凑出解决方案。

原理大概是这样的,先把选中的图片复制到剪切板上,然后保存剪切板的图像。

话不多说,上代码

using Microsoft.Office.Interop.Word;
using Microsoft.Office.Tools.Ribbon;
using Word = Microsoft.Office.Interop.Word;
using System.Drawing;
using System.IO;
using System;

namespace SavePicFromWord
{
        public partial class Ribbon1
       {
        private void StartSave()
        {
            Word.Application wordApp = Globals.ThisAddIn.Application;

            // 检查是否选择了图片
            if (wordApp.Selection.InlineShapes.Count > 0)
            {
                InlineShape selectedInlineShape = wordApp.Selection.InlineShapes[1];
                if (selectedInlineShape.Type == WdInlineShapeType.wdInlineShapePicture)
                {
                    selectedInlineShape.Range.CopyAsPicture ();
                    SavePic();
                }   
            }
        }
        private void SavePic()
        {
            if (Clipboard.ContainsImage())
            {
                try
                {
                    // 获取剪贴板中的图片
                    Image clipboardImage = Clipboard.GetImage();

                    // 定义要保存图片的路径
                    string savePath = Path.GetTempPath(); // 修改为你需要的路径,这里是操作系统缓存目录
                    string fileName = "ClipboardImage_" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".png";


                    // 保存图片到指定路径
                    string fullPath = Path.Combine(savePath, fileName);
                    clipboardImage.Save(fullPath, System.Drawing.Imaging.ImageFormat.Png);;
                }
                catch(Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }
        }
        }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值