我看到有人在网上谈论这个,有人建议我这样做,但看起来 iText 渲染引擎远不能匹配 MS word(openoffice,TeX)。 无论如何,解释 .doc 绝非易事(J.Spolsky 解释了原因)所以我有点怀疑。
我真的很想为一个项目这样做,但我在网上找不到任何东西,我认为最简单的方法是模块化 openoffice 并获取输入系统、布局系统和输出系统,留下银行的用户界面。但我现在在网上看到的最接近的东西是连接到 OpenOffice/MS Office 的实时实例并向其发送命令(读取 .doc、生成 PDF)。
您是否在网络上有任何代码来显示这个 [阅读 .doc -> 在文档中稍微编辑(添加一个小表格,填充空白) -> 生成 PDF] 神话链?
最佳答案
我推测这实际上只是假设可能。也就是说,听起来好像相关软件应该这样做,但实际情况却大不相同。正如您所说的那样,DOC 和 PDF 是非常不同的格式,将 DOC 忠实地一对一翻译为 PDF 的唯一方法是打印它并捕获输出,就像许多 PDF 创建者所做的那样。
POI 和 Aspose.Words 等其他软件可以让您阅读 DOC 的结构,iText 可以让您创建 PDF,但是这两种软件都必然存在一百万个小缺陷和边缘情况,这意味着任何转换器的实现肯定是非常重要的。我可以毫不犹豫地告诉您,iText 对拆分表格中的行的支持很差。在我参与的一个项目中,我们必须将行拆分表格单元格呈现为一种“屏幕外 PDF 图像”,然后将图像嵌入到单个表格单元格中。最后是一个足够令人愉快的 hack,但是在您甚至开始考虑嵌入式 OLE 对象、ActiveX 控件、自选图形、从右到左的语言之前,您将很难重现 DOC 支持的一些更丰富的功能,等等。我们不要忘记,每个版本的 Word 都会向 DOC 引入新功能并修复旧版本中的错误。
对于足够简单的文档,您可能需要付出一些努力才能获得合理的结果。我从来没有这样做过,而且我真的不想尝试,因为我知道一旦源文档的复杂性超过段落和标题,结果将是平庸的。无论您想做什么,我都鼓励您先寻找另一种方式。
关于java - 真的有人用 POI 阅读过 .doc 文件并用它创建了一个 iText 文档吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1261191/