我必须创建一个函数,告诉我上传的 PDF 文件是仅加密、仅时间戳、无或两者兼有。到目前为止,我使用的是 PDFBox 2.0.5,只有知道时间戳和无文件才能成功。
这是当前代码:
try{
InputStream fis = new ByteArrayInputStream(file.getBytes());
PDDocument d = PDDodument.load(fis); //encrypted file will go to InvalidPasswordException error
//***file not encrypted***
List<PDSignature> a = d.getSignatureDictionaries();
List<PDSignatureField> b = d.getSignatureFields();
if(a.size()==0 && b.size()==0){
//***file not timestamped***
}else{
//***file timestamped***
}
} catch(InvalidPasswordException e){
//***file encrypted***
//***is file timestamped?***
//***is file not timestamped?***
} catch(IOException e){
}
我的问题是,如何知道加密的 pdf 文件上是否有任何时间戳(作为签名)?
注意:我找到了几个 PDFBox 使用示例,但很少找到 PDFBox 最新版本实现示例
更新说明:文件是上传的 MultipartFile 对象,很难获得其路径,避免将其复制或传输到另一种对象类型