本文概述
- 验证错误的类别
- 加载现有文档
- 使用给定的PDF文件实例化解析器
- 调用parse()方法
- 获取飞行前文件并进行验证。
验证错误的类别 在PDFBox库中, 如果验证失败, 则” 验证结果” 的对象将包含所有失败原因。为了了解验证失败, 所有错误代码均具有以下格式X [.Y [.Z]], 其中-
- X-> 这是类别(示例-字体验证错误)
- Y-> 它代表类别的子节(示例-“ 带有字形(符号)错误的字体” )
- Z-> 它表示错误的原因(示例-“ 字形缺失的字体” )
加载现有文档 将fileName的路径作为字符串文件插入, 可以在以下代码中显示。
String fileName= "Path of existing fileName";
使用给定的PDF文件实例化解析器 实例化PreflightParser类, 并将现有的fileName作为其参数传递。
PreflightParser parser = new PreflightParser(fileName);
调用parse()方法 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<
ValidationResult>
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) {Optional<
ValidationResult>
validationResult = getValidationResult(fileName);
if (!validationResult.isPresent()) {returnfalse;
}ValidationResult result = validationResult.get();
if (result.isValid()) {returntrue;
}returnfalse;
} publicstaticvoid main(String[] args)throws IOException {//Loading an existing fileString 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.");
Optional<
ValidationResult>
validationResult = PDFTextStripperUtil.getValidationResult(fileName);
if (!validationResult.isPresent()) {return;
}ValidationResult result = validationResult.get();
for (ValidationError error : result.getErrorsList()) { System.out.println(error.getErrorCode() + " : " + error.getDetails());
}} }}
输出
成功执行以上程序后, 以下输出消息将显示如下。
文章图片
推荐阅读
- PDFBox分割PDF文件
- PDFBox教程介绍
- PDFBox合并PDF文档
- PDFBox删除页面
- PDFBox读取文字
- PDFBox加载现有文档
- PDFBox将图像插入PDF文档
- 获取图像的位置和大小
- PDFBox环境安装详细步骤