PDFBox验证

本文概述

  • 验证错误的类别
  • 加载现有文档
  • 使用给定的PDF文件实例化解析器
  • 调用parse()方法
  • 获取飞行前文件并进行验证。
【PDFBox验证】Apache PDFBox库提供了PreflightParser类。使用此类, 我们可以验证PDF文档。 ApachePreflight库是一个Java工具, 可实现符合ISO-19005规范(又名PDF / A-1)的解析器。
验证错误的类别 在PDFBox库中, 如果验证失败, 则” 验证结果” 的对象将包含所有失败原因。为了了解验证失败, 所有错误代码均具有以下格式X [.Y [.Z]], 其中-
  • X-> 这是类别(示例-字体验证错误)
  • Y-> 它代表类别的子节(示例-“ 带有字形(符号)错误的字体” )
  • Z-> 它表示错误的原因(示例-“ 字形缺失的字体” )
注意:根据识别错误详细信息的难度, 可能会缺少类别(‘ Y’ )和原因(‘ Z’ )。 请按照以下步骤在PDF文档中执行验证-
加载现有文档 将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验证

文章图片

    推荐阅读