对不起!我在java中很穷.
请在我错的地方纠正我,改善我穷人的地方!
我正在尝试使用PDFBox使用以下程序对动态创建的pdf进行数字签名:
本程序中的任务:
(i)创建模板PDF
(ii)更新ByteRange,xref,startxref
(iii)构建用于签名创建的原始文档
(iv)创建分离的包络数字签名
(v)通过连接原始Doc部分构建数字签名的PDF文档 - I,独立签名和原始PDF部分 - II
观察:
(i)pdfFileOutputStream.write(documentOutputStream.toByteArray()); 使用Visible Signature创建模板PDF文档.
(ii)它创建一些PDF签名文档,但有错误(a)无效令牌和(b)几个解析器错误
(现在在MKL的能力指导下纠正!)
请建议我以下内容:
(i)如何在layer2上的Visible Signature中添加签名文本.
提前致谢!
package digitalsignature;
import java.awt.geom.AffineTransform;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.security.Signature;
import java.util.ArrayList;
import org.bouncycastle.cert.X509CertificateHolder;
import org.bouncycastle.cert.jcajce.JcaCertStore;
import org.bouncycastle.cms.CMSProcessableByteArray;
import org.bouncycastle.cms.CMSTypedData;
import org.bouncycastle.cms.SignerInfoGenerator;
import org.bouncycastle.cms.SignerInfoGeneratorBuilder;
import org.bouncycastle.operator.jcajce.JcaContentSignerBuilder;
import org.bouncycastle.operator.jcajce.JcaDigestCalculatorProviderBuilder;
import org.bouncycastle.util.Store;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.security.KeyStore;
import java.security.PrivateKey;
import java.security.cert.CertStore;
import java.security.cert.Certificate;
import java.security.cert.CollectionCertStoreParameters;
import java.security.cert.X509Certificate;
import java.text.DecimalFormat;
import …Run Code Online (Sandbox Code Playgroud) 我有一个原始的PDF文档和单独的文件作为PKCS#7签名数据.我想将这些组合起来创建签名的PDF文档,以便它可以在Adobe读者中显示它已签名并签署了该文档.
Java中是否有可用于以编程方式创建此类签名PDF文档的库?我需要加载该PDF并以某种方式添加签名,然后将其另存为新的PDF文档.
示例代码将不胜感激.
编辑:
生成的代码应将PDF文档作为输入参数并执行以下操作:
据我所知,第一步很重要,因为没有它,PKCS#7签名数据将是错误的.