我有网络应用程序,人们可以通过 FTP 上传任何 pdf。pdf文件上传后,我对该pdf执行某些操作。
但这里的问题是,通过 FTP 上传 PDF 时,有时连接中断,上传的 pdf 不完整(就像损坏的一样)。当我尝试在 arobat 阅读器中打开该文档时,它会显示消息“打开文档时出错。文件已损坏,无法修复'.
现在在开始处理 PDF 之前,我想检查上传的 pdf 是否可读意味着没有损坏。
java是否为此提供任何API,或者有任何方法来检查文件是否损坏。
我有网络应用程序,人们可以通过 FTP 上传任何 pdf。pdf文件上传后,我对该pdf执行某些操作。
但这里的问题是,通过 FTP 上传 PDF 时,有时连接中断,上传的 pdf 不完整(就像损坏的一样)。当我尝试在 arobat 阅读器中打开该文档时,它会显示消息“打开文档时出错。文件已损坏,无法修复'.
现在在开始处理 PDF 之前,我想检查上传的 pdf 是否可读意味着没有损坏。
java是否为此提供任何API,或者有任何方法来检查文件是否损坏。
我们有Java 中的iText API来处理 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 的详细示例