从HTML导出为PDF(C#)

时间:2009-02-26 09:44:34

标签: c# asp.net html export

  

可能重复:
  Convert HTML to PDF in .NET

在我们的应用程序中,我们将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#作者? 有一些好的参考资料并且经过适当测试的那个?

9 个答案:

答案 0 :(得分:5)

我会选择在服务器上创建PDF文件。有很多产品都是这样做的,但你应该研究一下在你的情况下效果最好的产品,考虑以下因素:

  • 创建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)

MS有一种新的页面描述格式“XPS”,它可以简单地从WPF生成编程模型,无论是在服务器上还是在客户端上。有一个XPS Reader应用程序,如PDF阅读器,允许用户查看和打印XPS文档。有一个简单的API来生成XPS文档。

答案 8 :(得分:0)

尝试 PDF Duo .Net 组件,将HTML转换为PDF或从字符串转换为PDF档案|网址|流。 它是一个小但非常有效的库,可以在ASP.NET应用程序中使用。

Find ASP.NET C# example on its page.