在我们的应用程序中,我们将html文档作为报告和导出。 但现在我们的客户想要一个按钮,将该文档保存在他们的电脑上。问题是文档包含图像。 您可以使用以下代码创建Word文档:
private void WriteWordDoc(string docName)
{
Response.Buffer = true;
Response.ContentType = "application/msword";
Response.AddHeader("content-disposition", String.Format("attachment;filename={0}.doc", docName.Replace(" ", "_")));
Response.Charset = "utf-8";
}
但问题是图像只是链接,因此没有嵌入到word文档中。
因此我正在寻找另一种选择 PDF似乎是一个很好的选择,有没有人知道一个优秀的C#作者? 有一些好的参考资料并且经过适当测试的那个?
答案 0 :(得分:5)
我会选择在服务器上创建PDF文件。有很多产品都是这样做的,但你应该研究一下在你的情况下效果最好的产品,考虑以下因素:
我不会依赖Word格式,因为PDF将为您提供更多保证,以便将来可以阅读。
此外,对图像嵌入硬链接的选项对我来说似乎不是一个好主意。如果用户想要打开文档并且无法访问服务器该怎么办?
答案 1 :(得分:4)
你有一个更大的问题...保存生成的文件是浏览器的特权。即使您设置了内容类型,浏览器如何处理任何特定文件流完全取决于浏览器。您最好的选择可能是使用类似ABCpdf的内容将HTML /图像转换为PDF。我的软件运气不错,而且他们得到了不错的支持。当然,这是您必须安装的第三方工具。如果不这样做,你的下一个最佳选择可能是用图像和其他文件(CSS,javascript?)创建HTML的zip ...但这将需要相当多的后端逻辑。
有些浏览器内置了此功能。您可以要求您的用户使用它。 :)
答案 2 :(得分:3)
开源pdf流生成.net程序集:http://sourceforge.net/projects/itextsharp/
一旦掌握了它,你将永远不会使用任何第三方#%$ ^#或阻塞你的服务器做IO并再次为临时文件占用空间。
答案 3 :(得分:2)
您必须将图像绝对链接到互联网上的某个可用位置。
将文档加载到Word后,将“HTML”文档保存为MSWord,应该包含图像(或者可能是选项?)。
答案 4 :(得分:2)
ExpertPDF在将HTML转换为PDF(包括图片)方面做得不错。在内部,它使用IE的托管副本在转换之前呈现HTML,这意味着此组件不能与Linux上的Mono一起使用,这意味着IE的怪癖是您的PDF的怪癖。也就是说,它可以很好地渲染中等复杂的布局,并且可以使用CSS page-break-before等来控制分页。
答案 5 :(得分:2)
我喜欢DocRaptor.com来创建pdfs。它是一个适用于任何语言的Web应用程序,它使用Prince XML,因此结果是高质量的。
答案 6 :(得分:0)
我had the same problem但是还没有解决它,因为我们决定导出一个“无图像”文档,因为它首先没有任何图像。
但是,在搜索问题时,我遇到了this article,关于如何使用XSLT导出文档。 我还没有时间去研究它,但也许你可以去做吧
答案 7 :(得分:0)
答案 8 :(得分:0)
尝试 PDF Duo .Net 组件,将HTML转换为PDF或从字符串转换为PDF档案|网址|流。 它是一个小但非常有效的库,可以在ASP.NET应用程序中使用。