有没有人真的用POI读过.doc文件并用它创建了一个iText文档?

时间:2009-08-11 15:39:33

标签: java ms-word pdf-generation

我已经看到人们在网上谈到这一点,我被建议这样做,但看起来iText渲染引擎远远不匹配MS字(openoffice,TeX)。 无论如何,解释.doc远非微不足道(J.Spolsky解释了原因)所以我有点怀疑。

我真的很想为一个项目做这件事,但我在网上找不到任何东西,我认为最简单的方法是模块化openoffice并抓住输入系统,布局系统和输出系统,离开银行的用户界面。但我现在在网上看到的最接近的事情是连接到OpenOffice / MS Office的实时实例并向其发送命令(读取.doc,生成PDF)。

您是否在网络上有任何代码可以显示[read .doc - >在文档中编辑一点(添加一个小表,填充空白) - >生成PDF]神话链?

1 个答案:

答案 0 :(得分:2)

我猜想这实际上只是假设可能。也就是说,听起来好像有问题的软件应该这样做,但现实却大相径庭。正如您所说,DOC和PDF是非常不同的格式,并且创建DOC作为PDF的忠实一对一翻译的唯一方法是打印它并捕获输出,就像许多PDF创建者那样。

POI和Aspose.Words之类的其他软件可以让你阅读DOC的结构,而iText可以让你创建一个PDF,但是这两者中必然会出现一百万个小问题和边缘情况。转换器的实现肯定是不平凡的。我可以告诉你,iText支持在表格中拆分行。在我工作的项目中,我们必须将行分割表格单元格渲染为一种“屏幕外PDF图像”,然后将图像嵌入到单个表格单元格中。最后是一个令人愉快的hack,但在你开始考虑嵌入式OLE对象,ActiveX控件,自选图形,从右到左语言之前,你会非常难以重现DOC支持的一些更丰富的功能,等等。让我们不要忘记,Word的每个版本都会向DOC引入新功能,并修复旧版本中出现错误的内容。

对于足够简单的文档,您可以通过一点点努力获得合理的结果。我从来没有这样做过,我真的不想尝试,因为我知道一旦源文档的复杂性超出段落和标题,结果就会变得平庸。无论你想做什么,我都鼓励你先寻找另一种方式。