我写了一个简单的代码来比较两个pdf文件,但是在执行过程中我得到了一个错误:
线程“main”中的异常 java.lang.ClassCastException: java.io.FileInputStream cannot be cast to org.apache.pdfbox.io.RandomAccessRead 在 pdfComparator.PDFComparator.main(PDFComparator.java:29)
任何人都可以帮助我理解我的错误吗?提前致谢。
import java.io.IOException;
import java.io.File;
import org.apache.pdfbox.cos.COSDocument;
import org.apache.pdfbox.io.RandomAccessBufferedFileInputStream;
import org.apache.pdfbox.pdfparser.PDFParser;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.text.PDFTextStripper;
public class PDFComparator {
public static void main(String[] args) throws IOException{
if(args.length !=2){
System.out.println("Usage: java PDFComparator file1 file2");
System.exit(1);
}
String firstFilePath = args[0];
String secondFilePath = args[1];
File pdfFile1 = new File(firstFilePath);
File pdfFile2 = new File(secondFilePath);
RandomAccessBufferedFileInputStream raFile1 = new RandomAccessBufferedFileInputStream(pdfFile1);
RandomAccessBufferedFileInputStream raFile2 = new RandomAccessBufferedFileInputStream(pdfFile2);
PDFParser parser1 = new PDFParser(raFile1);
parser1.parse();
COSDocument cosDoc1 = parser1.getDocument();
PDDocument firstPDF = new PDDocument(cosDoc1);
PDFParser parser2 = new PDFParser(raFile2);
parser2.parse();
COSDocument cosDoc2 = parser2.getDocument();
PDDocument secondPDF = new PDDocument(cosDoc2);
PDFTextStripper stripper = new PDFTextStripper();
String text1 = stripper.getText(firstPDF).trim();
String text2 = stripper.getText(secondPDF).trim();
if (text1.equals(text2)){
System.out.println("The two PDF files are identical");
}else{
System.out.println("The two PDF files have differences");
}
firstPDF.close();
secondPDF.close();
}
}