处理eq问题
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);
}
}
}
相关文章
- 用C#实现Base64处理,加密解密,编码解码
- docker run -d启动容器时提示:warninig:IPv4 forwarding is disabled. Networking will not work.问题的处理方法
- 李宏毅课程-人类语言处理2-[视频]NLP任务总览(下)
- Java 异常处理
- [Python]ctypes+struct实现类c的结构化数据串行处理
- 《c陷阱与缺陷》中的笔记——c语言边界处理
- C/C++的“文件包含”处理时头文件被重复包含的问题探究及解决方法(用最简单的例子进行说明)
- Redis开发运维实践问题处理只内存检查
- 网络安全系列-三十九: 开源IDS/IPS/网络安全监控平台SELKS docker部署及问题处理
- k8s节点NotReady问题处理
- jQuery碎语(1) 基础、选择要操作的元素、处理DOM元素
- 如何处理postman Self-signed SSL certificate blocked错误
- Scrapy 2.6 Exceptions 异常处理使用指南
- Element-ui组件库Table表格导出Excel表格--存在重复数据问题-----建议前端不做导出逻辑,应该是后端做处理
- 异步编程的本质:后继处理流程的保存
- 类型系统(type system)是一门编程语言最核心也是最基础的部分---编程语言最终的目标,本质上无非是回答两个问题:如何表示信息、如何处理信息
- ceph 问题处理
- Requests接口测试-对cookies的操作处理(一)
- 浅析JS处理时间时区问题、将时间戳或时间对象转成字符串格式
- 前后台JSON传值得一个问题和异常处理net.sf.json.JSONException: Unquotted string '"name"'
- LINUX设备驱动程序笔记(五)中断处理
- FontForge 字体编辑器 word wps 处理上下标的不同
- (12)python异常处理,python中的 try except
- 【系统管理】Windws磁盘空间优化,C盘空间不足问题处理
- 【Ubuntu】Ubuntu网络配置DNS失效问题处理
- 【树莓派】树莓派新版系统SSH连接被拒绝问题处理
- 【Linux】Linux 文件中^M字符处理
- spring mvc DispatcherServlet详解之一---处理请求深入解析(续)
- 3.40 OrCAD输出网表出现“Duplicate Pin Name”错误时应该怎么处理?OrCAD输出网表出现“Illegal character”错误时应该怎么处理?
- UNIX(编程-进程处理):30---僵死进程、孤儿进程(SIGCLD、SIGHCLD信号处理)
- SQL Server管理员专用连接的使用 作为一名DBA,经常会处理一些比较棘手的服务无响应问题,鉴于事态的严重性,多数DBA可能直接用“重启”大法,以便尽快的恢复生产环境的正常运转,但是多数情况
- c# 并行计算(大量循环处理的场景下)