我有一个很常见的问题,正如我在各个用户组中看到的那样,但找不到合适的答案。
我想要做的是在我的网站中生成一个 ASP.NET 页面,该页面可以选择导出为 Microsoft Word .doc 格式。
我用过的方法是这样的:
Response.Clear();
Response.AddHeader("content-disposition", "attachment;filename=Test.doc");
Response.Charset = "";
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.ContentType = "application/msword";
StringWriter sw = new StringWriter();
HtmlTextWriter htmlWrite = new HtmlTextWriter(sw);
Page.RenderControl(htmlWrite);
Response.Write(sw.ToString());
Response.End();
然而,尽管它生成了一个 Word 文档,但图像会嵌入到文档中,而不是作为链接放置。我一直在寻找一种方法来做到这一点,但还没有找到真正有效的方法。
我将不胜感激我能得到的任何帮助,因为这是“最后一刻”的要求
(讲典型)
Thanks
简短回答:您需要提供页面中图像来源的绝对 URL。
较长的答案:
如果使用 *.doc 扩展名重命名 HTML 文档,Microsoft Word 将打开该文档。这就是您提供的代码正在执行的操作。在这种情况下,图像不会像您以实际 Word 格式创建文档那样嵌入到文档中。如果您的图像使用相对 URL,则 Word 将不知道在哪里查找它们,因此需要绝对 URL。
注意:这意味着任何在没有互联网连接的情况下查看文档的人都不会看到图像,因为每次打开文档时都会向服务器请求图像。
更优雅的解决方案是以真正的 Word 格式创建文档。一个很棒的库是Aspose.Words。使用此库,您可以将图像直接嵌入到文档中,这样它们就不会依赖服务器。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)