在ASP.NET中将MS Word文档转换为PDF

20
类似问题已经被提出,但没有和我完全一样的,所以我来问一下。我们在ASP.NET Web服务器上有一个Microsoft Word文档集合,其中包含合并字段,其值是由用户表单提交的结果填充的。字段合并后,服务器必须将文档转换为PDF并流式传输到浏览器。我们最初的想法是使用Visual Studio Tools for Office API; 然而,我们遇到了Microsoft的这个警告:

Microsoft目前不建议也不支持从任何非交互式客户端应用程序或组件(包括ASP、ASP.NET、DCOM和NT服务)自动化Microsoft Office应用程序,因为在此环境中运行Office可能会表现出不稳定的行为和/或死锁。

看起来可以使用Open XML SDK进行字段操作,但是如何在不打开Word的情况下将Word 2007文档转换为PDF呢?最佳解决方案应该是低成本、可扩展、占用内存少、易于部署,并且具有.NET API。

对于任何寻找简单解决方案的人,我建议看一下 GemBox.Document 库,它可以在 ASP.NET 中轻松将 DOCX 转换为 PDF(您所需要的只是 Load 和 Save 方法调用),而且还有一个直观的 邮件合并 API,因此您不必使用 OOXML SDK 来处理这个问题。 - Mario Z
8个回答

13

这个问题是“ASP.NET中将MS Word文档转换为PDF”,所以我很困惑为什么要推荐Aspose.Pdf和Aspose.Pdf.Kit.你需要使用Aspose.Words组件,因为它支持将Microsoft Word文档转换为PDF。


13

虽然不是开源软件,但Aspose有两款产品可以做到这一点,

Aspose.Pdf.Kit

Aspose.Pdf.Kit是一个非图形化的PDF®文档操作组件,使.NET和Java开发人员能够管理现有的PDF文件以及管理嵌入在PDF文件中的表单字段。Aspose.Pdf非常适合创建新的PDF文件;然而,开发人员经常需要编辑已存在的PDF文档。Aspose.Pdf.Kit可以让他们轻松实现。 Aspose.Pdf.Kit允许开发人员为将数据直接合并到PDF文档以及更新和管理PDF文档创建强大的应用程序。Aspose.Pdf.Kit是一个出色的产品,并且与我们的其他PDF产品完美配合。

以及Aspose.pdf

Aspose.Pdf是一个非图形化的PDF®文档报告组件,使.NET或Java应用程序能够从头开始创建PDF文档,而无需使用Adobe Acrobat®。Aspose.Pdf价格非常实惠,提供了众多强大的功能,包括:压缩、表格、图形、图像、超链接、安全性和自定义字体。Aspose.Pdf支持通过API、XML模板和XSL-FO文件创建PDF文件。Aspose.Pdf非常易于使用,并提供14个完整功能的演示,分别用C#和Visual Basic编写。

查看API演示。 您可以免费下载DLL以尝试它们。 我以前都用过它们,效果很好。

还有iTextSharp,它是 iText 的 C# 移植版本,用于将 Java PDF 转换为 C#。据我所知,一些人尝试使用它,但效果不稳定。


1
在尝试了许多不同的产品之后,Aspose绝对是首屈一指的。它的主要缺点是成本 - 它不便宜,但你得到你所付出的。 - Eric Pohl
我也赞同@glaxaco,Aspose产品很棒,支持也很好,物有所值。另外,Aspose Words现在支持更容易地进行doc转PDF转换。 - John
1
@John 是正确的 - 您不再需要单独的 Aspose.Pdf 产品来从 Word 文档创建 PDF。 - Eric Pohl

4

1

Aspose.Words可能是您的最佳选择,但它不能完美地转换所有视觉元素。

看看Muhimbi PDF Converter Web Services。它作为Windows服务运行,但可以从任何非Windows Web服务环境(包括Java和.NET)访问。

尽管此解决方案需要在服务器上安装MS-Office(不一定是应用程序所在的同一台服务器),但它非常强大,并提供完美的转换保真度。它会竭尽全力解决Microsoft在其KB文章中提到的死锁问题。

要生成或修改MS-Word文件,我建议使用免费的Open XML SDK for Microsoft Office。Eric White维护了一个非常好的博客

免责声明,我参与了该产品的开发。话虽如此,它运行得非常好。


1
你应该尝试使用OpenOffice。它是免费的,并支持各种文件转换。我曾经使用它将DOC和DOCX文件转换为HTML格式,效果非常好。

你能分享一下你的示例存储库吗?我也在尝试在OpenOffice上完成它。 - FritsJ

1

1

ActivePdf DocConverter - http://www.activepdf.com/

但是它需要在服务器上安装Office以获得良好的转换质量。


0

微软Word的PDF插件似乎是现在最好的解决方案,但需要考虑到它不能正确地将所有Word文档转换为PDF,在某些情况下,您将看到Word和输出PDF之间巨大差异。不幸的是,我找不到任何可以正确转换所有Word文档的API。我找到的唯一解决方案是通过打印机驱动程序转换文档以确保转换100%正确。缺点是文档被排队并逐个转换,但您可以确保生成的PDF与Word文档完全相同。我个人喜欢使用UDC(通用文档转换器)并在服务器上安装了Foxit Reader(免费版本),然后通过启动“进程”并将其动词属性设置为“打印”来打印文档。您还可以使用FileSystemWatcher来设置信号,以表示转换已完成。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接