个性化阅读
专注于IT技术分析

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 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.");
			
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验证
赞(0)
未经允许不得转载:srcmini » PDFBox验证

评论 抢沙发

评论前必须登录!