(高手请进)word文档转换为图片(解决后加500分)

ITZYF 2010-05-28 06:16:16
using System;
using System.Collections;

using Word;
using System.Drawing;

using System.Windows.Forms;
using System.IO;
using System.Drawing.Imaging;
using System.Data.SqlClient;



namespace CovertWordToPic
{
public class WordUtility
{

ApplicationClass wordApplicationClass = null;
object missing = System.Reflection.Missing.Value;
object yes = true;
object filePathObject = null;

public Bitmap GetImageFromFile(string filePath)
{
Bitmap bmp=null;
if (wordApplicationClass == null)
{
wordApplicationClass = new ApplicationClass();
}
MemoryStream stream = null;
//List collectionImageSream = new List();
try
{
filePathObject = filePath;
Document document = wordApplicationClass.Documents.Open(ref filePathObject, ref missing,
ref yes, ref missing, ref missing, ref missing,
ref missing, ref missing, ref missing, ref missing,
ref missing, ref missing, ref missing, ref missing,
ref missing, ref missing);
wordApplicationClass.Visible = false;
int j = document.StoryRanges.Count;
//for (int i = 1; i <= document.InlineShapes.Count; i++)
//{
//document.InlineShapes[i].Select();
document.ActiveWindow.Selection.WholeStory();
document.ActiveWindow.Selection.CopyAsPicture();

//document.ActiveWindow.Selection.CopyAsPicture();
System.Windows.Forms.IDataObject data = Clipboard.GetDataObject();
if (data.GetDataPresent(typeof(System.Drawing.Bitmap)))
{

stream = new MemoryStream();
bmp = (Bitmap)data.GetData(typeof(System.Drawing.Bitmap));
bmp.Save(stream, ImageFormat.Bmp);
bmp.Save("c:\\1.bmp");
//collectionImageSream.Add(stream);
bmp.Dispose();
}
//}

}
catch (Exception ex)
{
throw ex;
}
finally
{
wordApplicationClass.Quit(ref missing, ref missing, ref missing);
}
return bmp;
}


}}

document.ActiveWindow.Selection.CopyAsPicture();之后,剪贴板里,已经有内容,但是为什么data.GetDataPresent(typeof(System.Drawing.Bitmap))返回的是Null.高手帮帮忙吧
...全文
670 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
懒虫虫 2010-12-01
  • 打赏
  • 举报
回复
先要转换为HTML格式,要从HTML上转换成图片吧!!
wlz_braintrust 2010-06-12
  • 打赏
  • 举报
回复
11111111111111111111111111
skep99 2010-05-28
  • 打赏
  • 举报
回复
CopyAsPicture方法和Copy方法没任何区别,拷贝的都是元数据,并不是bmp,
所以你在剪贴板里搜不到bmp类型的数据的,

拷贝时以ole方式链接到word中的,在剪贴板中只会存有emf数据
所以你检索不到bitmap
从if判断那改一下,你可以检索出emf,建个richTextBox1,粘贴一下,你就知道CopyAsPicture到底做了什么了


...
document.ActiveWindow.Selection.WholeStory();
Clipboard.Clear();
document.ActiveWindow.Selection.CopyAsPicture();
IDataObject data = Clipboard.GetDataObject();
if (data.GetDataPresent(DataFormats.MetafilePict))
{
this.richTextBox1.Paste();

...


wuyq11 2010-05-28
  • 打赏
  • 举报
回复
ITZYF 2010-05-28
  • 打赏
  • 举报
回复
Up 一下

110,576

社区成员

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

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

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