2009-02-26 65 views
10

可能重复:
Convert HTML to PDF in .NET出口从HTML到PDF(C#)

在我们的应用中,我们做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"; 
} 

但问题是,图像只是一个链接因此没有嵌入文字文件内。

因此,我正在寻找替代品 PDF似乎是一个很好的选择,有没有人知道一个好的PDF编写器的C#? 一个有一些很好的参考,并已正确测试?

+2

请注意,你所做的是**不**创建一个Word文档。您只是滥用Word的“功能”即使将其屏蔽为“.doc”文件,也能够打开HTML文档。 – 2011-10-26 08:26:41

回答

5

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

  • 创建PDF所需的计算机资源。如果这是一个复杂的文档,它可能需要很长时间,或者减慢对其他用户的响应速度。
  • 将需要相同功能的并发用户数
  • 成本(有免费解决方案以及重量级商业产品)。

我不会依赖于Word格式,因为PDF会给你更多的保证,它将在未来可读。

此外,嵌入硬链接到图像的选项对我来说似乎不是一个好主意。如果用户想要打开文档并且服务器无法访问会怎么样?

2

你将不得不将图像绝对链接到互联网上的一些可用位置。

将文档加载到Word中后,将'HTML'文档保存为MSWord文档应该包含图像(或者可能是一个选项?)。

+0

你另一种选择是使用VSTO的东西,但我从来没有用过它。 – leppie 2009-02-26 09:53:39

0

我有had the same problem,但还没有解决它,因为我们决定导出一个“无图像”的文件,因为它没有任何图像。

但是,在搜索问题时,我遇到了this article,介绍了如何使用XSLT导出文档。 我还没有找到工作的时间,但也许你可以去看看它

4

你有一个更大的问题...保存生成的文件是浏览器的特权。即使设置内容类型,浏览器如何处理任何特定的文件流,完全取决于浏览器。你最好的选择是使用像ABCpdf这样的HTML /图像转换成PDF。我的软件运气非常好,而且他们有很好的支持。当然,这是你必须安装的第三方工具。如果没有这样做,你的下一个最佳选择可能是创建一个包含图像和其他文件(CSS,JavaScript?)的HTML压缩文件,但是这需要相当多的后端逻辑。

某些浏览器内置此功能。你可以让你的用户使用它。 :)

+0

这是我有过任何经验的唯一一个。在过去我寻找替代品,但ABCpdf几乎是镇上唯一的游戏。这是一个利基工具。 – Bryan 2009-02-27 17:30:35

+0

我使用通过模拟打印机工作的doPDF。没有格式丢失的方式。 – Kyte 2010-06-16 18:50:26

0

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

2

ExpertPDF做HTML转换为PDF格式(包括图像)的一份体面的工作。在内部,它使用IE的托管副本在转换HTML之前呈现HTML,这意味着该组件不适用于Linux上的Mono,这意味着IE的怪癖是PDF的怪癖。也就是说,它可以很好地渲染适度复杂的布局,并且可以使用CSS page-break-before等来控制分页。

+1

ExpertPDF 9.0版及更高版本(2013年12月发布)现在使用WebKit引擎,因此IE不再是一个因素。 – Theophilus 2014-08-11 20:52:59

2

我喜欢DocRaptor.com创建PDF文件。这是一款可以用任何语言编写的网络应用程序,它使用Prince XML,所以结果是高质量的。