看起来可以使用Open XML SDK进行字段操作,但是如何在不打开Word的情况下将Word 2007文档转换为PDF呢?最佳解决方案应该是低成本、可扩展、占用内存少、易于部署,并且具有.NET API。Microsoft目前不建议也不支持从任何非交互式客户端应用程序或组件(包括ASP、ASP.NET、DCOM和NT服务)自动化Microsoft Office应用程序,因为在此环境中运行Office可能会表现出不稳定的行为和/或死锁。
看起来可以使用Open XML SDK进行字段操作,但是如何在不打开Word的情况下将Word 2007文档转换为PDF呢?最佳解决方案应该是低成本、可扩展、占用内存少、易于部署,并且具有.NET API。Microsoft目前不建议也不支持从任何非交互式客户端应用程序或组件(包括ASP、ASP.NET、DCOM和NT服务)自动化Microsoft Office应用程序,因为在此环境中运行Office可能会表现出不稳定的行为和/或死锁。
这个问题是“ASP.NET中将MS Word文档转换为PDF”,所以我很困惑为什么要推荐Aspose.Pdf和Aspose.Pdf.Kit.你需要使用Aspose.Words组件,因为它支持将Microsoft Word文档转换为PDF。
虽然不是开源软件,但Aspose有两款产品可以做到这一点,
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是一个非图形化的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#。据我所知,一些人尝试使用它,但效果不稳定。
请查看微软关于使用C#或VB将Word 2007文档保存为PDF和XPS格式的资源:Saving Word 2007 Documents to PDF and XPS Formats。
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维护了一个非常好的博客。
免责声明,我参与了该产品的开发。话虽如此,它运行得非常好。
微软Word的PDF插件似乎是现在最好的解决方案,但需要考虑到它不能正确地将所有Word文档转换为PDF,在某些情况下,您将看到Word和输出PDF之间巨大差异。不幸的是,我找不到任何可以正确转换所有Word文档的API。我找到的唯一解决方案是通过打印机驱动程序转换文档以确保转换100%正确。缺点是文档被排队并逐个转换,但您可以确保生成的PDF与Word文档完全相同。我个人喜欢使用UDC(通用文档转换器)并在服务器上安装了Foxit Reader(免费版本),然后通过启动“进程”并将其动词属性设置为“打印”来打印文档。您还可以使用FileSystemWatcher来设置信号,以表示转换已完成。