C# 把WORD文件转成图片,报错:集合所要求成员不存在

nslh520 2015-10-08 05:12:02
C# 把WORD文件转成图片
如果把visibale=true,有多页的WORD文件,这里就报错,提示:集合所要求的成员不存在,如果设置visibale=false,多页文件不报错了,但会自动打开WORD软件界面,不想让WORD界面出现到桌面,想后台转换


string startupPath="C:\\Users\\Administrator\\Desktop\\test";
string filename1 = "test3.docx"; ;
var docPath = Path.Combine(startupPath, filename1);
var app = new Microsoft.Office.Interop.Word.Application();
// MessageFilter.Register();
app.Visible = true;
var doc = app.Documents.Open(docPath);

doc.ShowGrammaticalErrors = false;
doc.ShowRevisions = false;
doc.ShowSpellingErrors = false;

if (!Directory.Exists(startupPath + "\\" + filename1.Split('.')[0]))
{
Directory.CreateDirectory(startupPath + "\\" + filename1.Split('.')[0]);
}

//Opens the word document and fetch each page and converts to image
foreach (Microsoft.Office.Interop.Word.Window window in doc.Windows)
{
foreach (Microsoft.Office.Interop.Word.Pane pane in window.Panes)
{


for (var i = 1; i <= pane.Pages.Count; i++)
{

var page = pane.Pages[i]; (如果把visibale=true,有多页的WORD文件,这里就报错,提示:集合所要求的成员不存在,如果设置visibale=false,多页文件不报错了,但会自动打开WORD软件界面,不想让WORD界面出现到桌面,想后台转换)
var bits = page.EnhMetaFileBits;
var target = Path.Combine(startupPath + "\\" + filename1.Split('.')[0], string.Format("{1}_page_{0}", i, filename1.Split('.')[0]));

try
{
using (var ms = new MemoryStream((byte[])(bits)))
{
var image = System.Drawing.Image.FromStream(ms);
var pngTarget = Path.ChangeExtension(target, "png");
image.Save(pngTarget, ImageFormat.Png);
}
}
catch (System.Exception ex)
{ }
}
}
}
doc.Close(Type.Missing, Type.Missing, Type.Missing);
app.Quit(Type.Missing, Type.Missing, Type.Missing);
// MessageFilter.Revoke();
...全文
354 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
耀阳82 2018-04-09
  • 打赏
  • 举报
回复
修正一下,加入图片中的如下4行代码是正确的方案。
原理:将每一页激活,载入内存,这样就可以获取到了,否则word并没有将所有的页面都载入内存,所以获取不到相应的内容。
耀阳82 2018-04-05
  • 打赏
  • 举报
回复

增加两条语句即可。
arucil 2015-10-14
  • 打赏
  • 举报
回复
我也遇到这个问题,求问楼主是怎么解决的
nslh520 2015-10-08
  • 打赏
  • 举报
回复
自己搞定了...

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧