我正在尝试学习使用 Apache 的 pdfBox 来处理工作中的数字签名文档。在测试过程中,我创建了一个完全空的 pdf 文档。
然后我通过 Adobe reader 使用带有证书的签名功能对文档进行了签名。
我尝试使用 pdfBox 打开、保存和关闭签名文件,而不进行任何修改。但是,一旦我在 Adobe 中打开该文件,这些文件就不再有效。
Adobe 告诉我:“此签名中包含的格式或信息存在错误(支持信息:SigDict/Contents 非法数据)”
由于我没有修改文件的内容,直观上不应该有任何问题,签名应该仍然有效,但事实并非如此,我不知道解决方案是什么(谷歌搜索没有结果)。
我如何创建文档:
@Test
public void createEmptyPDF() throws IOException {
String path = "path to file";
PDDocument document = new PDDocument();
PDPage page = new PDPage();
document.addPage(page);
document.save(path);
document.close();
}
Run Code Online (Sandbox Code Playgroud)
然后我用 adobe 签名并通过以下方式传递:
@Test
public void copySignedDocument() throws IOException {
String path = "path to file";
File file = new File(path);
PDDocument document = PDDocument.load(file);
document.save(file);
document.close();
//just opening and saving the …Run Code Online (Sandbox Code Playgroud) 我有两个pdf文档经过认证(使用基于Itext 7的相同机制进行签名和验证),当我使用adobe reader DC检查其有效性时,只有一个有绿色标记.
好的:https: //1drv.ms/b/s !AkF6t4TavwMvgxWaidlUqvPvHH1r
坏的:https: //1drv.ms/b/s!AkF6t4TavwMvgxQCMdGY61S1EvUh
问候
大卫L.