itext可以生成pdf并对其进行各种操作,其中就包括签章,并且用其他工具签的章,itext也可以识别出来。
目前系统中有一个需求,系统要求上传的pdf必须进行签章,上传后需要对pdf进行验签和拿到pdf章的证书的所有者,
拿到章证书的所有者代码如下
PdfReader reader = new PdfReader(pdfPath);
AcroFields acroFields = reader.getAcroFields();
if (acroFields == null) {
return result;
}
//签章名称
List<String> signatureNames = acroFields.getSignatureNames();
if (signatureNames == null || signatureNames.size() == 0) {
return result;
}
reader.close();
for (String str : signatureNames) {
//签章对应的字典
PdfDictionary sigDict = acroFields.getSignatureDictionary(str);
if (sigDict == null) {
continue;
}
PdfName sub = sigDict.getAsName(PdfName.SUBFILTER);
if (PdfName.ADBE_X509_RSA_SHA1.equals(sub)) {
//签章对应的证书
PdfString certStr = sigDict.getAsString(PdfName.CERT);
if (certStr == null) {
certStr = sigDict.getAsArray(PdfName.CERT).getAsString(0);
}
if (certStr == null) {
continue;
}
//签章对应的证书
X509CertParser certParser = new X509CertParser();
certParser.engineInit(new ByteArrayInputStream(certStr.getBytes()));
Collection<Certificate> certs = certParser.engineReadAll();
if (certs == null || certs.size() == 0) {
continue;
}
X509Certificate certificate = (X509Certificate) certs.iterator().next();
if (certificate == null) {
continue;
}
X500Principal principal = certificate.getSubjectX500Principal();
if (principal == null) {
continue;
}
//签章对应的证书的所有者
LdapName ldapDN = new LdapName(principal.getName());
for (Rdn rdn : ldapDN.getRdns()) {
if ("CN".equals(rdn.getType())) {
result.add((String) rdn.getValue());
}
}
}
}
分享到:
相关推荐
包括itext的jar包,以及对pdf进行签章所需要的jar包,
通过iText不仅可以生成PDF或rtf的文档,而且可以将XML、Html文件转化为PDF文件。如果PDF是标记的且包含一个结构树,就可以借助于iText将PDF文档转换成XML文档(这往往取决于PDF文档是如何创建的)。另外还可以从页面...
java使用itext解析pdf并生成文本文件,并把生成的文件按指定目录存放。eclipse工程
itextpdf实现pdf签章代码示例,依赖itextpdf-5.5.0、bcpkix-jdk15on-1.64、bcprov-jdk15on-1.64 jar包
1 ■ Introducing PDF and iText 3 2 ■ Using iText’s basic building blocks 20 3 ■ Adding content at absolute positions 57 4 ■ Organizing content in tables 93 5 ■ Table, cell, and page events 122 ...
简单的javademo,利用itextpdf实现电子签章,添加背景图片,水印。 支持支持利用检索文件某内容实现签章,如落款处、私章等
iText是一个能够快速产生PDF文件的java类库。iText的java类对于那些要产生包含文本,表格,图形的只读文档是很有用的。它的类库尤其与javaServlet有很好的给合。使用iText与PDF能够使你正确的控制Servlet的输出。
Java使用iText PDF插件导出PDF文档时,需引入中文字体文件,并创建不同大小风格的中文字体
iText生成pdf解决中文不显示字库,pdf凉字不显示,由于生成iText插件生成pdf的时候中文会显示不出来,遇到过的是"凉"字,查到是字体库的原因,网上下载字体库msyh.ttc,生成的时候指定字体库,就可以解决了,小bug一...
IText国密PDF电子签章,基于《GB/T 38540-2020 安全电子签章规范》开发
itext 生成pdf 目录,itext 生成pdf 目录,itext 生成pdf 目录
把大的PDF文件拆分成指定大小文件,但是因为每页的文件大小不一定,就不能通过固定页数来拆分文件,这样子的话就需要我们通过计算来将文件拆分这指定大小的文件
生成PDF文件,引用到的JAR包是itext5.5.1 项目文件为PDFText.java 主要实现功能: 1、创建一个PDF文件:HelloWorld.pdf,给文档设置加密,密码为zhouyl或111 2、将PDF文件压缩成ZIP文件 3、生成一个PDF文件D:\\...
java使用itext对PDF进行签名签章。包括:java创建PDF文档,java对PDF进行加水印,java对PDF加图片水印。java对PDF进行签章。java读取p12秘钥库中证书对PDF进行签章加密。
java解决Itext生成PDF中文不换行的问题
java使用itextpdf、itext-asian对pdf文件加中文文字水印,此demo只提供参考,希望给需要的朋友带来帮助,谢谢支持!
java使用itext实现pdf文件下载小案例,通过系统路径下载,和通过浏览器下载
一段经典的处理iText打印pdf表格代码。
Android使用iText生成pdf并读取pdf内容,iText是著名的开放源码的站点sourceforge的一个项目,可用来生成Pdf文件和读取Pdf文件内容.