📅  最后修改于: 2021-01-07 07:49:31             🧑  作者: Mango
Apache PDFBox库提供PreflightParser类。使用此类,我们可以验证PDF文档。 ApachePreflight库是一个Java工具,可实现符合ISO-19005规范(aka PDF / A-1)的解析器。
在PDFBox库中,如果验证失败,则“验证结果”的对象将包含所有失败原因。为了了解验证失败,所有错误代码均具有以下格式X [.Y [.Z]],其中-
注意:根据识别错误详细信息的难度,可能会缺少类别('Y')和原因('Z')。
请按照以下步骤在PDF文档中执行验证-
将fileName的路径作为字符串文件插入,可以在以下代码中显示。
String fileName= "Path of existing fileName";
实例化PreflightParser类,并将现有的fileName作为其参数传递。
PreflightParser parser = new PreflightParser(fileName);
parse()方法用于解析流并填充COSDocument对象。 COSDocument对象允许访问PDF文档的所有方面。
parser.parse();
try (PreflightDocument document = parser.getPreflightDocument()) {
document.validate();
ValidationResult result = document.getResult();
return Optional.of(result);
}
import java.io.IOException;
import java.util.Objects;
import java.util.Optional;
import org.apache.pdfbox.preflight.PreflightDocument;
import org.apache.pdfbox.preflight.ValidationResult;
import org.apache.pdfbox.preflight.ValidationResult.ValidationError;
import org.apache.pdfbox.preflight.parser.PreflightParser;
public class PdfValidatonPage {
public static Optional getValidationResult(String fileName) {
if (Objects.isNull(fileName)) {
thrownew NullPointerException("fileName cannot be null.");
}
try {
PreflightParser parser = new PreflightParser(fileName);
parser.parse();
try (PreflightDocument document = parser.getPreflightDocument()) {
document.validate();
ValidationResult result = document.getResult();
return Optional.of(result);
}
} catch (IOException e) {
return Optional.empty();
}
}
publicstaticboolean isValidPDF(String fileName) {
OptionalvalidationResult = getValidationResult(fileName);
if (!validationResult.isPresent()) {
returnfalse;
}
ValidationResult result = validationResult.get();
if (result.isValid()) {
returntrue;
}
returnfalse;
}
publicstaticvoid main(String[] args)throws IOException {
//Loading an existing file
String fileName= "/eclipse-workspace/Merge.pdf";
if (PDFTextStripperUtil.isValidPDF(fileName)) {
System.out.println("The file " + fileName + " is a valid PDF/A-1b file");
} else {
System.out.println("The existing file is Not a valid PDF/A-1b.");
OptionalvalidationResult = PDFTextStripperUtil.getValidationResult(fileName);
if (!validationResult.isPresent()) {
return;
}
ValidationResult result = validationResult.get();
for (ValidationError error : result.getErrorsList()) {
System.out.println(error.getErrorCode() + " : " + error.getDetails());
}
}
}
}
输出:
成功执行以上程序后,以下输出消息将显示如下。