【问题标题】:How to know with java whether file is corrupted (readable) or not?如何用java知道文件是否损坏(可读)?
【发布时间】:2012-05-07 05:57:41
【问题描述】:

我有一个网络应用程序,人们可以通过 FTP 上传任何 pdf。上传 pdf 文件后,我对该 pdf 执行某些操作。

但这里的问题是,通过 FTP 上传 PDF 时,有时连接中断,上传的 pdf 不完整(就像损坏的一样)。当我尝试在 arobat 阅读器中打开该文档时,它会显示消息'打开文档时出错。文件已损坏,无法修复'。

现在在开始处理 PDF 之前,我想检查上传的 pdf 是否可读意味着没有损坏。

java是否为此提供任何API,或者有任何方法来检查文件是否损坏。

【问题讨论】:

  • 使用MD5SUM做本地hash,上传后做远程hash并比较。

标签: java file jakarta-ee


【解决方案1】:

我们在 Java 中有 iText API 来处理 PDF 文件。

要检查 PDF 文件是否可以有效加载和阅读,请使用 com.itextpdf.text.pdf.PdfReader
如果文件损坏,则会引发类似com.itextpdf.text.exceptions.InvalidPdfException 的异常。

示例代码 sn-p

...  
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 文件,但在中间中止它。
使用它通过上面的代码sn-p加载,并检查它是否安全加载。

您可以在

找到有关 iText API 的详细示例

Use Case Examples of iText PDF | iText.

【讨论】:

  • 如何知道位图/图像文件是否损坏?
  • 你能详细说明你的问题吗?你希望它如何与itext 一起使用?
  • 我只需要知道有没有办法找出存储的图像是否损坏? [安卓,java]
  • AFAIK,没有这样的东西可以检查图像是否损坏。即使存储了部分图像。可以在任何图像查看器中打开它并显示存储的图像部分。
  • 这个How to determine if a photo is corrupted?的答案可能对你有用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-25
相关资源
最近更新 更多