我有Web應用程序,人們可以通過FTP上傳任何pdf。在pdf文件上傳後,我對該pdf進行了某些操作。如何用java知道文件是否被損壞(可讀)或不可讀?
但是,這裏的問題是,通過FTP上傳PDF時,有時連接會中斷,上傳的PDF不完整(就像損壞的一樣)。當我嘗試在一個閱讀器中打開該文檔時,它會給出消息'打開文檔時出錯。該文件已損壞,無法修復'。
現在開始處理PDF之前,我想檢查上傳的pdf是否可讀意味着沒有損壞。
java是否提供任何API,或者有任何方法來檢查文件是否被損壞。
我有Web應用程序,人們可以通過FTP上傳任何pdf。在pdf文件上傳後,我對該pdf進行了某些操作。如何用java知道文件是否被損壞(可讀)或不可讀?
但是,這裏的問題是,通過FTP上傳PDF時,有時連接會中斷,上傳的PDF不完整(就像損壞的一樣)。當我嘗試在一個閱讀器中打開該文檔時,它會給出消息'打開文檔時出錯。該文件已損壞,無法修復'。
現在開始處理PDF之前,我想檢查上傳的pdf是否可讀意味着沒有損壞。
java是否提供任何API,或者有任何方法來檢查文件是否被損壞。
我們有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上找到詳細的示例。
使用'MD5SUM'製作本地散列,並在上傳後進行遠程散列並進行比較。 –