从 HTML 导出到 PDF(C#)[重复]
Posted
技术标签:
【中文标题】从 HTML 导出到 PDF(C#)[重复]【英文标题】:Export from HTML to PDF (C#) [duplicate] 【发布时间】:2010-10-10 01:04:13 【问题描述】:可能重复:Convert html to PDF in .NET
在我们的应用程序中,我们将 html 文档作为报告和导出。 但是现在我们的客户想要一个按钮来将该文档保存在他们的 PC 上。问题是文档包含图像。 您可以使用以下代码创建一个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# 的优秀 pdf 编写器吗? 有一些很好的参考资料并且已经过适当的测试?
【问题讨论】:
请注意,您所做的不是创建 Word 文档。您只是在滥用 Word 的“功能”来打开 HTML 文档,即使它被屏蔽为.doc
文件。
【参考方案1】:
我会选择在服务器上创建 PDF 文件。有许多产品可以这样做,但您应该研究最适合您的情况的产品,考虑以下几点:
创建 PDF 所需的计算机资源。如果它是一个复杂的文档,它可能会花费很长时间,或者会减慢对其他用户的响应。 需要相同功能的并发用户数 成本(有免费的解决方案以及重量级的商业产品)。我不会依赖 Word 格式,因为 PDF 会为您提供更多保证,确保它在未来的可读性。
此外,对我来说,嵌入图像硬链接的选项似乎不是一个好主意。如果用户想打开文档而服务器无法访问怎么办?
【讨论】:
【参考方案2】:你有一个更大的问题......保存生成的文件是浏览器的特权。浏览器如何处理任何特定的文件流,即使您设置了内容类型,也完全取决于浏览器。您最好的选择可能是使用 ABCpdf 之类的东西将 HTML/图像转换为 PDF。我在他们的软件上很幸运,他们得到了不错的支持。当然,这是您必须安装的第三方工具。如果不这样做,您的下一个最佳选择可能是使用图像和其他文件(CSS、javascript?)创建 HTML 的 zip……但这需要相当多的后端逻辑。
某些浏览器内置了此功能。您可以要求您的用户使用它。 :)
【讨论】:
这是我唯一有经验的人。过去我寻找替代品,但 ABCpdf 几乎是城里唯一的游戏。这是一个小众工具。 我使用 doPDF,它通过模拟打印机工作。这种方式不会丢失任何格式。【参考方案3】:开源pdf流生成.net程序集:http://sourceforge.net/projects/itextsharp/
一旦掌握了窍门,您将永远不会使用任何第 3 方#%$^# 或阻塞您的服务器执行 IO 并再次为临时文件占用空间。
【讨论】:
我还没试过,但我喜欢你的观点。【参考方案4】:您必须为图片提供指向 Internet 上某个可用位置的绝对链接。
一旦将文档加载到 Word 中,将“HTML”文档保存为 MSWord 文档,应该包含图像(或者可能是一个选项?)。
【讨论】:
你的另一种选择是使用 VSTO 的东西,但我以前从未使用过。【参考方案5】:ExpertPDF 在将 HTML 转换为 PDF(包括图像)方面做得不错。在内部,它使用 IE 的托管副本在转换 HTML 之前呈现 HTML,这意味着该组件不适用于 Linux 上的 Mono,这意味着 IE 的怪癖是您的 PDF 的怪癖。也就是说,它在呈现适度复杂的布局方面做得很好,您可以使用 CSS page-break-before 等来控制分页。
【讨论】:
ExpertPDF 9.0 及更高版本(2013 年 12 月发布)现在使用 WebKit 引擎,因此 IE 不再是一个因素。【参考方案6】:我喜欢 DocRaptor.com 创建 pdf。这是一个适用于任何语言的 Web 应用程序,它使用 Prince XML,因此结果质量很高。
【讨论】:
【参考方案7】:我有had the same problem,但还没有解决它,因为我们决定导出“无图像”文档,因为它首先没有任何图像。
但是,在搜索问题时,我遇到了this article,关于如何使用 XSLT 导出文档。 我还没有时间研究它,但也许你可以尝试一下
【讨论】:
【参考方案8】:MS 有一种新的页面描述格式“XPS”,无论是在服务器上还是在客户端上,都可以从 WPF 编程模型中简单地生成它。有一个 XPS 阅读器应用程序,如 PDF 阅读器,允许用户查看和打印 XPS 文档。有一个简单的 API 可以生成 XPS 文档。
【讨论】:
【参考方案9】:试试 PDF Duo .Net 组件,该组件将 HTML 转换为 PDF 和字符串 |文件 |网址 |溪流。 它是一个小型但非常有效的库,您可以在 ASP.NET 应用程序中使用它。
Find ASP.NET C# example on its page.
【讨论】:
以上是关于从 HTML 导出到 PDF(C#)[重复]的主要内容,如果未能解决你的问题,请参考以下文章