私は複数の署名付きのデジタル署名pdfを持っています。今私は署名の1つだけを取り除きたいと思う。私は同じもののためにそれを使用しています。"少なくとも1つの署名が無効です"というエラーメッセージが表示される
PdfReader reader = new PdfReader(src_path);
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(dest_path));
{
AcroFields.Item item = stamper.getAcroFields().getFieldItem(fieldname);
ClearSignatureDictionary(item.getMerged(0));
ClearSignatureDictionary(item.getWidget(0));
ClearSignatureDictionary(item.getValue(0));
}
}
private static void ClearSignatureDictionary(PdfDictionary dic)
{
dic.remove(PdfName.AP);
dic.remove(PdfName.AS);
dic.remove(PdfName.V);
dic.remove(PdfName.DV);
dic.remove(PdfName.SV);
dic.remove(PdfName.FF);
dic.put(PdfName.F, new PdfNumber(4));
}
をしかし、私は取り除かれ、署名付き文書を開くと、それは私にアクロバットリーダー 「の署名のうち少なくとも一つが無効である」
複数の署名を個別に削除することはできませんか? – dexter
一度に複数の署名を削除することはできますが、特定のリビジョンに移動するだけで削除できます。 'fields.signatureCoversWholeDocument(" sig3 ")'を使っても意味をなさないので、同じエラーが発生するというあなたのコメントは無視します。署名が文書全体をカバーしているかどうかをチェックすることは、**読み取り専用操作です**。その機能を持つ文書を変更することはできませんので、署名を破棄することはできません。 –