Apache PDFbox - 如何测试文档是否被拼合?



我写了下面的小Javamain方法。它采用(硬编码用于测试目的!我知道的PDF文档在表单中包含活动元素,需要将其展平。

public static void main(String [] args) {
try {
// for testing
Tika tika = new Tika();
String filePath = "<path-to>/<pdf-document-with-active-elements>.pdf";
String fileName = filePath.substring(0, filePath.length() -4);
File file = new File(filePath);
if (tika.detect(file).equalsIgnoreCase("application/pdf")) {
PDDocument pdDocument = PDDocument.load(file);
PDAcroForm pdAcroForm = pdDocument.getDocumentCatalog().getAcroForm();
if (pdAcroForm != null) {
pdAcroForm.flatten();
pdAcroForm.refreshAppearances();
pdDocument.save(fileName + "-flattened.pdf");
}
pdDocument.close();
}
}
catch (Exception e) {
System.err.println("Exception: " + e.getLocalizedMessage());
}
}

什么样的测试会断言此代码生成的File(<path-to>/<pdf-document-with-active-elements>-flattened.pdf)实际上是平坦的?

什么样的测试会断言由此代码生成的文件实际上是平面的?

重新加载该文档并检查其PDAcroForm中是否有任何表单字段(如果有PDAcroForm(。

如果您想彻底,还要遍历页面并确保不再有与之关联的 Widget注释。

为了真正彻底,在拼合之前还要确定字段位置和内容,并将这些位置的文本提取应用于拼合的 pdf。这验证了表单不仅被丢弃,而且确实被展平。

相关内容

最新更新