我正在尝试使用pdfbox库签署pdf。我现在卡住了,真的需要帮助。
这是我的代码:
private static void signPdf(PDDocument document) throws Exception
{
PDSignature sig = new PDSignature();
sig.setFilter(COSName.ADOBE_PPKLITE);
sig.setSubFilter(COSName.ADBE_PKCS7_DETACHED);
sig.setByteRange(new int[] {'a','a','a','a'});
sig.setContents(new byte[]{(byte) 23, (byte) 23, (byte) 23, (byte) 23});
SignatureOptions options = new SignatureOptions();
document.addSignature(sig, new SignatureInterface() {
public byte[] sign(InputStream content)
throws SignatureException, IOException {
//this should be made MD5 checksum?
return new byte[]{(byte) 'a', (byte) 'a', (byte) 'a', (byte) 'a'};
}
}, options);
}
然后我正在保存我的pdf,但是:1)我注意到sign method从来没有被调用2)我应该在哪里附加CertyFicate?在sign method中?
/Type /Sig
/Filter /Adobe.PPKLite
/SubFilter /adbe.pkcs7.sha1
/Contents <0000000000. a lot of zeros..000>
/ByteRange [0 1000000000 1000000000 1000000000]
以下是我保存PDF的方法:
java prettyprint-override">public static void saveFile(COSDocument doc, String out)
throws IOException, COSVisitorException {
java.io.OutputStream os = null;
COSWriter writer = null;
try {
os = new java.io.FileOutputStream(out);
writer = new COSWriter(os);
writer.write(doc);
} finally {
if (os != null) {
os.close();
}
if (writer != null) {
writer.close();
}
}
}
链接的pdfbox-signexample.zip已过期。请改用此示例:
https://svn.apache.org/repos/asf/pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/signature/createSignature.java
更好地记录和保持最新。
问题内容: 我正在尝试验证Java中经过数字签名的PDF文档。 我使用Apache PDFBox 2.0.6获取签名和已签名的原始PDF,然后使用Bouncy Castle验证分离的签名(计算原始文件的哈希,使用签名者的公钥验证签名并进行比较结果)。 我阅读了这篇文章,并尝试使用以下代码获取签名字节和原始PDF字节: 但是,当我将origPDF保存到文件中时,我注意到它仍然具有签名原始PDF所没有
我尝试使用pdfbox向我的pdf添加多个签名,我尝试使用两个签名,第二个签名总是无效。请给出建议,PDF文件可以进行多次数字签名吗?Adobe livecycle论坛表示同意。
PDF创建步骤: 通过添加空签名字段名称创建pdf:suhasb@gmail.com和nikhil.courser@gmail.com,使用原始的hello.pdf输出文件名hello_tag.pdf运行程序>tagpdfsignaturefields.java 从hello_tag.pdf文件中提取签名字段suhasb@gmail.com进行首次签名,输出文件名为hello_signd.pdf
带文本和背景图像的数字文本我正在尝试用Java中的PDFBox对pdf文件进行数字签名,在页面上显示可见的文本,类似于在Acrobat中手动创建时所创建的文本。如图像所示(一个只有快照我正在寻找,另一个也有数字签名的详细信息),这个示例显示了使用图像文件进行签名。怎么做?
我想问一个问题,如果我想在多页pdf中添加数字签名,每页都有相同的印章,我是否可以在第一页只添加一次数字签名,然后其他页面只需要引用第一个印章的外观。因为使用这种方法可以减少添加邮票的时间。 我使用了mkl给出的代码,但我有一个问题。我用其他代码替换了以下代码。 原件: 现在: 原始代码在加盖印花时有效,但修改后的代码将使印花无效。我使用Adobe Acrobat Pro DC打开已签名的文档。此
签署修改的问题。 Iam使用DSC令牌传递文档哈希和签名哈希(外部签名)。 Iam收到错误,例如:“文档自签名以来已被更改或损坏”获取文档哈希:- 外部签名代码:- 签名附加代码:- 此签名附加后,但在打开签名的PDF时会出现如下图所示的错误。 PDF文件链接:https://drive.google.com/file/d/1qRT2CVgET8Ds1fu0b5psii3j8ytPKaLH/vie