100分请教高手,C#关于html转word,复制图片的问题.

时间:2021-10-18 08:36:14
最近有个项目,有个功能是要求将html转换为word格式,现在基本功能可以实现了,下面是代码: 
HttpWebRequest hr = (HttpWebRequest)HttpWebRequest.Create(@"http://localhost:2635/WebSite1/t20090714_699.htm"); 
hr.KeepAlive = false; 
HttpWebResponse hr2 = (HttpWebResponse)hr.GetResponse(); 
StreamReader sr = new StreamReader(hr2.GetResponseStream(), Encoding.Default); 
string str = ""; 
while (sr.Peek() != -1) 
    str += sr.ReadLine(); 
Response.ContentEncoding = System.Text.Encoding.Default; 
StringWriter word = new System.IO.StringWriter(); 
Response.AppendHeader("Content-Disposition", "attachment;filename=FileName.doc"); 
Response.ContentType = "application/vnd.ms-word"; 
Response.Write(str); 
但是有个问题,如果被转换的网页中包含图片,如 
<IMG  src="t20090714_699_files/W020090714492296259845.jpg" /> 如果图片路径写成绝对路径转换为word可以正常显示,但是要是写成相对路径图片就无法显示,找不到图片,我想是因为转换为word时没有将图片复制到指定路径下,不知道可不可以直接把图片也复制到word中,请问大家该怎么解决,谢谢.

23 个解决方案

#1


换成绝对路径

#2


附加说明:
   
    A.网络的图片有部分是代码生成的图片.
    B.不要说把图片换成绝对路径,因为换了绝对路径换台不上网机器就看不了了.

#3


关注 中。。 

#4


好像用相对路径是有问题
还有提个建议,这个地方最好用StringBuilder
string str = "";
while (sr.Peek() != -1)
    str += sr.ReadLine(); 

#5


100分请教高手,C#关于html转word,复制图片的问题.
给楼主顶一个

#6


真正的WORD支持网络中的图片的。
你把你得相对路径改为图片在网站的路径例如http://www.baidu.com/img/baidu_logo.gif

#7


引用 6 楼 wzp144650 的回复:
真正的WORD支持网络中的图片的。
你把你得相对路径改为图片在网站的路径例如http://www.baidu.com/img/baidu_logo.gif


我当然知道WORD支持网络图片,问题是如果我把WORD拷到另外一台不能上网的电脑上,那图片就显示不了了.

#8


帮LS顶了

#9


up

#10


帮LZ顶了

#11


用microsoft.office.tools.word组件试试吧。

#12


帮顶

#13


换成绝对路径,断网,我这里依然能看到图片。
不存在看不到的问题。RT

#14


判断下 是否存在该文件

#15


判断下 是否存在该文件

#16


microsoft.office.tools.word组件

#17


up

#18


问题解决,结贴!

#19


该回复于2010-09-02 17:41:11被版主删除

#20


怎么解决的分享一下啊

#21


求楼主解决办法啊?

#22


word直接支持读入HTML文档
直接打开html文件,保存为wrod 文档。
function AllAreaWord()  
{  
  var oWD = new ActiveXObject("Word.Application");  
  var oDC = oWD.Documents.Add("",0,1);  
  var orange =oDC.Range(0,1);  
  var sel = document.body.createTextRange();  
  sel.moveToElementText(PrintA);  
  sel.select();  
  sel.execCommand("Copy");  
  orange.Paste();  
  oWD.Application.Visible = true;  
}  

#23


这个问题肯定是可以解决的    word中的图片一般都是嵌入在Word文件中的资源  ,插入图片时将图片作为资源插入,举个简单的例子  你把某个图片链接打开  获取到的图片放在剪贴板中  插入Word后就可以了

至少我很早已经能够实现这个功能  很简单的几句代码

#1


换成绝对路径

#2


附加说明:
   
    A.网络的图片有部分是代码生成的图片.
    B.不要说把图片换成绝对路径,因为换了绝对路径换台不上网机器就看不了了.

#3


关注 中。。 

#4


好像用相对路径是有问题
还有提个建议,这个地方最好用StringBuilder
string str = "";
while (sr.Peek() != -1)
    str += sr.ReadLine(); 

#5


100分请教高手,C#关于html转word,复制图片的问题.
给楼主顶一个

#6


真正的WORD支持网络中的图片的。
你把你得相对路径改为图片在网站的路径例如http://www.baidu.com/img/baidu_logo.gif

#7


引用 6 楼 wzp144650 的回复:
真正的WORD支持网络中的图片的。
你把你得相对路径改为图片在网站的路径例如http://www.baidu.com/img/baidu_logo.gif


我当然知道WORD支持网络图片,问题是如果我把WORD拷到另外一台不能上网的电脑上,那图片就显示不了了.

#8


帮LS顶了

#9


up

#10


帮LZ顶了

#11


用microsoft.office.tools.word组件试试吧。

#12


帮顶

#13


换成绝对路径,断网,我这里依然能看到图片。
不存在看不到的问题。RT

#14


判断下 是否存在该文件

#15


判断下 是否存在该文件

#16


microsoft.office.tools.word组件

#17


up

#18


问题解决,结贴!

#19


该回复于2010-09-02 17:41:11被版主删除

#20


怎么解决的分享一下啊

#21


求楼主解决办法啊?

#22


word直接支持读入HTML文档
直接打开html文件,保存为wrod 文档。
function AllAreaWord()  
{  
  var oWD = new ActiveXObject("Word.Application");  
  var oDC = oWD.Documents.Add("",0,1);  
  var orange =oDC.Range(0,1);  
  var sel = document.body.createTextRange();  
  sel.moveToElementText(PrintA);  
  sel.select();  
  sel.execCommand("Copy");  
  orange.Paste();  
  oWD.Application.Visible = true;  
}  

#23


这个问题肯定是可以解决的    word中的图片一般都是嵌入在Word文件中的资源  ,插入图片时将图片作为资源插入,举个简单的例子  你把某个图片链接打开  获取到的图片放在剪贴板中  插入Word后就可以了

至少我很早已经能够实现这个功能  很简单的几句代码