2012-05-07 3 views
3

У меня есть веб-приложение, где вы можете загрузить любой PDF через FTP. После загрузки файла PDF я выполняю определенные операции над этим pdf.Как узнать с java, поврежден ли файл (читаемый) или нет?

Но проблема в том, что при загрузке PDF через FTP иногда соединение разрывается между ними, и загруженный pdf не является полным (действует как поврежденный). Когда я пытаюсь открыть этот документ в читателе arobat, он выдает сообщение «Ошибка при открытии документа. Файл поврежден и не может быть восстановлен '.

Теперь, перед началом обработки через PDF, я хочу проверить, является ли загруженный PDF-документ доступным, означает, что он не поврежден.

Должен ли я предоставить какой-либо 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

Смежные вопросы