随笔 - 100  文章 - 50  trackbacks - 0
<2024年12月>
24252627282930
1234567
891011121314
15161718192021
22232425262728
2930311234

常用链接

留言簿(3)

随笔分类

随笔档案

文章分类

文章档案

收藏夹

我收藏的一些文章!

搜索

  •  

最新评论

阅读排行榜

评论排行榜

如果在系统中有比较多的PDF文件,但是的pdf文件可能被损坏了,我们可以利用itext 用来检测
首先下载itext包
http://sourceforge.net/projects/itext/files/
然后在执行以下代码

import java.io.File;
import java.io.FileFilter;
import java.io.IOException;
import java.util.ArrayList;
import com.itextpdf.text.Document;
import com.itextpdf.text.pdf.PdfReader;
public class TestPdf {
 private static ArrayList<String> pdffiles = new ArrayList<String>();

 /**
  * 递归得到特定目录下的所有文件
  */
 public static void getAllPdfFile(String basedir) {
  File dir = new File(basedir);
  File[] files = dir.listFiles(new PdfFileFilter());
  if (files == null)
   return;
  for (int i = 0; i < files.length; i++) {
   if (files[i].isDirectory()) {
    getAllPdfFile(files[i].getAbsolutePath());
   } else {
    pdffiles.add(files[i].getAbsolutePath());
   }
  }
 }
 /**
  * 循环检测
  */
 private static void CheckPdfFiles(ArrayList<String> files) {
  for (String file : files) {
   boolean flag = false;
   flag = check(file);
   if (!flag) {
    System.out.println(file + "文件损坏");
   }
  }
 }

 /**
  * 利用itext打开pdf文档
  */
 private static boolean check(String file) {
  boolean flag1 = false;
  int n = 0;
  try {
   Document document = new Document(new PdfReader(file).getPageSize(1));
   document.open();
   PdfReader reader = new PdfReader(file);
   n = reader.getNumberOfPages();
   if (n != 0)
    flag1 = true;
   document.close();
  } catch (IOException e) {
   System.out.println(e.getMessage());
  }
  return flag1;

 }

 public static void main(String[] args) {
  getAllPdfFile("C:\\CO_uat\\");
  if (pdffiles.size() > 0)
   CheckPdfFiles(pdffiles);
  System.out.println("No break down file");
 }
}
/*
 * pdf文件过滤器
 */
class PdfFileFilter implements FileFilter {
 public boolean accept(File file) {
  if (file.isFile()) {
   String filename = file.getName().toLowerCase();
   if (filename.endsWith(".pdf") == true) {
    return true;
   } else {
    return false;
   }
  } else {
   return true;
  }
 }

}

posted on 2010-09-01 18:20 fly 阅读(5317) 评论(3)  编辑  收藏 所属分类: java学习

FeedBack:
# re: Java检查PDF文件是否损坏 2012-12-10 21:36 Chart
Exception in thread "main" java.lang.NoClassDefFoundError: org/bouncycastle/asn1/ASN1OctetString
报上面这个异常呀.....有没有API,不知道怎么出错的....  回复  更多评论
  
# re: Java检查PDF文件是否损坏 2013-02-19 16:12 Ge-魔术弹
谢谢 很好用 !  回复  更多评论
  
# re: Java检查PDF文件是否损坏 2013-02-19 16:13 Ge-魔术弹
@Chart
应该是没有引入包   回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航: