在Java中将PDF转换为Word

在Java中将PDF转换为Word,java,pdf,ms-word,Java,Pdf,Ms Word,可以用Java将PDF转换为Word吗?我不是说解析PDF文档,然后将其再次自定义呈现给Word。我想要一个可以直接转换的Java库。阅读PDF文档是一个非常复杂的过程,没有好的免费库可以在Java中从PDF文档中提取非文本信息。更糟糕的是,PDF文档有很多难以重建的布局信息,例如Word文档中的表格变成了PDF中的一些行和一堆文本。几乎不可能从任意PDF重新创建语义信息。如果你有写它的相同工具,你会有更多的机会,但即使如此,也有很多不确定性。在(文本)PDF中唯一可以确定的是每个字符在页面上的

可以用Java将PDF转换为Word吗?我不是说解析PDF文档,然后将其再次自定义呈现给Word。我想要一个可以直接转换的Java库。

阅读PDF文档是一个非常复杂的过程,没有好的免费库可以在Java中从PDF文档中提取非文本信息。更糟糕的是,PDF文档有很多难以重建的布局信息,例如Word文档中的表格变成了PDF中的一些行和一堆文本。

几乎不可能从任意PDF重新创建语义信息。如果你有写它的相同工具,你会有更多的机会,但即使如此,也有很多不确定性。在(文本)PDF中唯一可以确定的是每个字符在页面上的位置。(请注意,某些PDF包含出现文本信息且必须依赖OCR的位图)

在计算机科学系和其他地方,有几个小组正在花费大量的精力尝试获取语义信息。我们与宾夕法尼亚州立大学(Penn State)——领导者之一——合作,他们正在提取表格。在好的情况下,他们得到90%,在坏的50%

因此,正式的答案是你不能,但你可能偶尔会很幸运。(我们在化学方面做了很多这方面的工作,如果我们定期得到50%的回报,我们算是幸运的)

  • 您可以尝试使用iText库执行此操作。阅读PDF,然后以RTF格式编写。
    但这并不是那么简单,因为您必须保留PDF的不同样式

  • 您可以使用一些外部工具。
    安装一些免费程序,如“free PDF to Doc”,并从java程序中执行它。
    这在大多数情况下都很有效

  • 使用java代码中的Acrobat Pro SDK


  • 祝你好运

    “许多难以重建的布局信息”是误导性的。没有布局信息。PDF中的所有内容都是绝对定位的。没有表格这种东西,它只是行、字符(“glyphs”)和一些位图。见鬼,“文本”也可以是行。我的评论有一个例外:在PDF中有一种叫做“标记内容”的东西是可选的。当它存在时,它可以标记表格、段落等,但是没有标准的方法写出可靠的PDF->N格式转换所需的详细信息。PDF几乎是一种只写格式。尝试过一些PDF重建后,PDF中有一些视觉布局信息,但没有真正的结构化信息。我同意你的观点,将PDF转换成任何非图像都是非常困难的。我从来没有理解过这一点……只需保留原始文档即可。@我敢肯定,有时可能有必要这样做,但实际上,PDF的整个要点是一个最终确定的、不可编辑的文档<代码>@kcopock。这是当你需要从别人的文件中获取信息时。例如,我需要科学文献中的数据。尽管出版商有XML,但他们通常拒绝提供,因此我们必须尝试从PDF中提取。在许多情况下,人们必须重新键入内容或重新绘制图表。我可以理解,但同时,这通常意味着出版商不希望您使用内容。@kcopock。我以挑战这一观点而闻名于科学界,但Stackoverflow并不是讨论它的最佳场所!然而,在很多情况下,这样做是合法的。和其他人一样,我认为你不会有太多的运气。如果您可以控制生成PDF的系统,那么您可以让它在生成时生成多种格式(您还没有说PDF来自何处)。这是一个选项吗?我听说你想“直接”完成它,但是在没有单个(开源?)库的情况下,你可以尝试使用docx4j提取并创建docx。YMMV:Google pdfbox“段落边界分割”