2012-05-07 107 views
3

我有Web應用程序,人們可以通過FTP上傳任何pdf。在pdf文件上傳後,我對該pdf進行了某些操作。如何用java知道文件是否被損壞(可讀)或不可讀?

但是,這裏的問題是,通過FTP上傳PDF時,有時連接會中斷,上傳的PDF不完整(就像損壞的一樣)。當我嘗試在一個閱讀器中打開該文檔時,它會給出消息'打開文檔時出錯。該文件已損壞,無法修復'。

現在開始處理PDF之前,我想檢查上傳的pdf是否可讀意味着沒有損壞。

java是否提供任何API,或者有任何方法來檢查文件是否被損壞。

+7

使用'MD5SUM'製作本地散列,並在上傳後進行遠程散列並進行比較。 –

回答

7

我們有iText API在Java中使用PDF文件。

要檢查PDF文件是否有效加載和讀取,請使用com.itextpdf.text.pdf.PdfReader
如果文件已損壞,則拋出異常,如com.itextpdf.text.exceptions.InvalidPdfException

示例代碼段

... 
import com.itextpdf.text.pdf.PdfReader; 
... 
try { 
    PdfReader pdfReader = new PdfReader(pathToUploadedPdfFile); 

    String textFromPdfFilePageOne = PdfTextExtractor.getTextFromPage(pdfReader, 1); 
    System.out.println(textFromPdfFilePageOne); 
} 
catch (Exception e) { 
    // handle exception 
} 

在上傳的,但損壞的文件,你可能會面臨以下錯誤的情況下:

com.itextpdf.text.exceptions.InvalidPdfException: Rebuild failed: 
    trailer not found.; Original message: PDF startxref not found. 

:爲了生產這種例外,嘗試從網絡上保存一個PDF文件,但放棄它在中間。
使用它通過上面的代碼片段加載並檢查它是否安全加載。

您可以在iText API,here上找到詳細的示例。

+0

如何知道位圖/圖像文件是否損壞? – DearDhruv

+0

你能詳細說明你的問題嗎?你想如何使用'itext'? –

+0

我只需要知道是否有任何方法可以找出存儲的圖像是否損壞? [android,java] – DearDhruv

相關問題