2010-11-03 117 views
4

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

+1

像其他人一样,我不认为你将有多少运气。如果您控制了生成PDF的系统,那么您可以在生成时生成多种格式(您没有说过PDF的来源)。这是一个选择吗? – 2010-11-08 06:38:42

+0

我听说你想直接做这件事,但是如果没有一个(开源的)库,你可以尝试用http://pdfbox.apache.org/进行提取,然后用docx4j创建docx。 YMMV:Google pdfbox“段落边界分割” – JasonPlutext 2010-11-17 03:26:55

回答

4

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

+1

“很多难以重建的布局信息”是误导性的。没有布局信息。 PDF中的所有内容都是绝对定位的。没有像桌子这样的东西,它只是线条,字符(真正的“字形”),也可能是一些位图。哎呀,“文字”也可以是线条。没有效率,但完全“合法”。 – 2010-11-03 18:25:10

+1

对我的评论的例外:有些东西叫做“标记内容”,在PDF中是可选的。当它在那里时,它可以标记表格,段落等。但是没有标准的方式来写出您需要的可靠的PDF-> N格式转换的详细信息。 PDF只是一种只写格式。 – 2010-11-03 18:26:34

+0

试图做一些PDF重建有一些PDF格式的视觉布局信息,但没有真正的结构化信息。我同意你的看法,将PDF转换为非图像非常困难。 – 2010-11-04 13:43:13

2

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

计算机科学系有几个团队和其他人花费很大的努力试图获取语义信息。我们与宾州州立大学合作 - 领导者之一 - 他们正在研究提取表格。在好的情况下,他们得到90%的不好的50%。

所以答案是正式的,你不能,但你可能偶尔是幸运的。 (我们为化学做了很多这样的工作,如果我们定期获得50%的收益,那我们就算幸运了。

+0

我从来没有明白这一点......只是保留原始文件。 @。@我肯定有可能有必要的时候,但实际上,PDF的全部内容都是最终确定的,不可编辑的文档。'' – kcoppock 2010-11-03 18:40:59

+0

@kcoppock。这是你需要从其他人的文件中提取的东西。例如,我想从科学文献中获取数据。尽管出版商拥有XML,但他们通常拒绝将其提供,所以我们必须尝试从PDF中提取。在很多情况下,人们不得不重新输入东西或重绘图。 – 2010-11-03 19:05:47

+0

我可以理解,但同时,这通常意味着发布商不希望您使用该内容。 – kcoppock 2010-11-03 19:15:06

0
  1. 您可以尝试使用iText库来做到这一点。阅读PDF文件,然后将其写为RTF格式。
    虽然这并不简单,但您必须保留PDF所具有的不同风格。

  2. 您可以使用一些外部工具。
    安装一些免费的程序,如“Free PDF to Doc”,并从你的java程序中执行它。
    这在大多数情况下工作正常。

  3. 从您的java代码使用Acrobat Pro SDK。

祝您好运