2009-12-13 69 views
1

我一直在这个问题heckuva时间,似乎有很多噪音在那里搜索引擎到底,所以,原谅我,如果我错过了一颗银弹。ASP.NET网站,服务器端的DOCX到PDF转换

基本需求是我必须生成一个同时具有静态和动态元素的PDF文档。我开始通过使用包含所有静态内容的PDF模板来实现这一点,然后我想将各种动态元素注入其中。问题在于PDF不能被这样操纵,并且取决于我放入其中的动态文本的大小,可能会使其他页面上的文本溢出。我使用的是iTextSharp,但无法解决这个问题。

可能的后备之一是生成一个DOCX,我已经完成,然后将其转换为后端的PDF。我发现这样做的唯一库是付费应用程序(如Aspose)。有examples out there没有这些库转换为PDF,但他们似乎需要一个客户端应用程序。我通过IIS来做这件事。

为了使一个更长的故事更长...有没有免费的库,将DOCX文件转换为PDF服务器端,而无需启动客户端应用程序来这样做?

+1

答-2下面提到的答案使用像LibreOffice/unoconv做的转换。我确定OP现在已经解决了这个问题,但我只是将我的经验留给未来的googlers:libreoffice --headless或unoconv不一定会试图使文档呈现与MS Word中的文档完全相同。我的经验是,如果我使用LibreOffice创建一个.odt文件,生成的PDF非常接近完美,但是使用在Word中创建的.docx或.odt会显得有点时髦,这可能会或可能不会成为您的问题应用。你已被警告! – chucksmash 2013-04-01 21:57:15

回答

1

有几个选择这里:

  • 建立一个COM互操作类,将会对您的.docx读取和“另存为”功能。您提供的MSDN链接不需要在客户端运行,而是在GAC或ASP.NET的bin目录中安装Office程序集。

  • 购买第三方组件为您完成工作。 Here's just one example with no guarantees

2

我不熟悉任何好的免费应用,但我们使用Aspose.Words来实现类似于您所描述的内容。我们使用静态文本和邮件合并字段保存Word模板。模板可以是常规的Word文档,它们不一定是.dot模板。邮件合并字段可以是单个字段,也可以是表格中的可重复数据,因此您可以在不进行动态文档编辑的情况下轻松生成相当复杂的文档(这总是一个选项)

使用Aspose为此是如此无摩擦,我会建议使用Aspose,除非成本(这是显着的)是一个表演停止。支持也很好,这总是额外的好处。

总有一些注意事项...

  • 我本来希望在生成的PDF文件的PDF兼容更多的控制。我们在阅读生成的PDF文件时遇到了一些老客户的问题。
  • 邮件合并不好玩。复杂的邮件合并表达式很耗时。
-3

我只是觉得很简单的解决方案,以任何文件从命令行使用LibreOffice的转换:

soffice.exe --headless - 转换到PDF文件。xls

(其余的谷歌)