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

标签 java ms-word pdf-generation

我看到有人在网上谈论这个,有人建议我这样做,但看起来 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/

相关文章:

java - Eclipse 密码恢复

java - 如何在java中的通用数组中使用compareTo?

excel - VSTO - Word 和 Excel 的共享插件以修改功能区

r - 呈现pdf时如何在R markdown中制作2列布局?

c# - MigraDoc 是否支持国家/地区字符/unicode 字符?

java - 运行helloworld时出错+classpath问题

java - 如何在 Java Servlet 应用程序上为每个用户创建一个数据库连接?

javascript - 如何在 Javascript 中格式化剪贴板数据,以便在粘贴到 MS Word 时创建软换行符?

c# - 使形状始终位于第一页

java - 如何在 iText 中相邻显示两个 PDFTable