如果在系统中有比较多的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学习