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。

祝您好運