`
roc08
  • 浏览: 227500 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

itext解析pdf中签章文件的证书

阅读更多
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生成pdf并通过证书进行签章

    本文将详细探讨如何使用iText库生成PDF并利用证书进行签章,确保文档的完整性和不可篡改性。 首先,iText是一个强大的开源Java库,专门用于创建、修改和处理PDF文档。它提供了一系列API,使得开发者可以方便地实现...

    java使用itext解析pdf并生成文本文件—eclipse工程

    在这个“java使用iText解析pdf并生成文本文件—eclipse工程”中,我们将探讨如何利用iText库在Java环境中,特别是在Eclipse集成开发环境中,解析PDF文档并将其内容导出为文本文件。 首先,我们需要理解PDF...

    IText解析PDF文件

    ### IText解析PDF文件 #### 一、PDF与iText简介 在《iText in Action》第二版书中,作者Bruno Lowagie介绍了如何利用iText这一强大的Java库来创建和操作PDF文档。本书覆盖了iText 5版本,并通过众多实例深入浅出地...

    itext解析pdf全能最新jar

    通过iText不仅可以生成PDF或rtf的文档,而且可以将XML、Html文件转化为PDF文件。如果PDF是标记的且包含一个结构树,就可以借助于iText将PDF文档转换成XML文档(这往往取决于PDF文档是如何创建的)。另外还可以从页面...

    itextpdf电子签章.zip

    在iTextPDF中,可以创建一个`PdfSignatureAppearance`对象,然后使用`setCrypto`方法设置所需的证书和私钥。签章的外观可以通过设置`setRectangle`参数来调整,这决定了签章在页面上的位置和大小。同时,可以使用`...

    iText PDF中文字体文件.rar

    总结来说,使用iText在PDF中处理中文字符,关键在于正确注册和使用中文字体文件。通过上述步骤,你不仅可以创建包含中文的PDF文档,还能定制字体大小和风格,满足多样化的展示需求。在实际开发中,根据项目需求,你...

    itextpdf签章示例

    这里我们将深入探讨如何使用iTextPDF库在Java环境中实现PDF签章的功能。 iTextPDF是一个强大的开源Java库,专门用于创建、编辑和操作PDF文档。在5.5.0版本中,iTextPDF提供了丰富的API,支持包括签章在内的各种高级...

    使用itextpdf将PDF大文件拆分成若干份指定大小文件.zip

    本主题涉及的是如何使用Java和iTextPDF库来将一个大PDF文件拆分成多个指定大小的文件。首先,我们需要理解PDF文件的结构以及iTextPDF库的基本操作。 iTextPDF是一个强大的Java库,它提供了丰富的API来创建、修改和...

    Itext删除PDF的图层

    这个文件很可能是用来解析PDF中的Optional Content Groups信息的。在Itext中,我们需要遍历PDF的结构,找到OCGs,并读取它们的属性,如名称、可见性状态等。`OCGParser`可能包含解析PDF元数据,识别OCGs并存储在适当...

    java使用itext实现pdf文件下载

    &lt;artifactId&gt;itextpdf &lt;version&gt;5.5.13 ``` 接下来,我们将探讨如何生成PDF文件。以下是一个简单的例子,展示如何创建一个包含简单文本的PDF文档: ```java import com.itextpdf.text.Document; import ...

    itext7 pdf转图片

    - 图像转换:将PDF转换为图像,实际上是将PDF的每一页解析并渲染成一个图像文件。这通常涉及到色彩空间的转换、分辨率设置、图像质量控制等技术。 3. iText 7中的PDF到图像转换: - iText 7提供`PdfRenderer`类,...

    Java实现PDF读写(Itext)与解析XML读写(Dom4j)

    生成PDF文件,引用到的JAR包是itext5.5.1 项目文件为PDFText.java 主要实现功能: 1、创建一个PDF文件:HelloWorld.pdf,给文档设置加密,密码为zhouyl或111 2、将PDF文件压缩成ZIP文件 3、生成一个PDF文件D:\\...

    iText生成pdf解决中文不显示

    iText生成pdf解决中文不显示字库,pdf凉字不显示,由于生成iText插件生成pdf的时候中文会显示不出来,遇到过的是"凉"字,查到是字体库的原因,网上下载字体库msyh.ttc,生成的时候指定字体库,就可以解决了,小bug一...

    iTextpdf支持中文

    "支持中文.txt"可能是包含有关如何在iTextpdf中处理中文字符的说明或示例代码的文本文件。通常,处理非ASCII字符集,如中文,可能需要额外的设置或配置,例如使用正确的字体和编码。在iTextpdf中,可能需要指定支持...

    itextpdf中文帮助文档.pdf

    11. **事件处理**:讨论iTextPDF中的事件模型,允许开发者在特定PDF生成阶段进行自定义处理。 12. **性能优化**:提供有关如何提高处理大量PDF文档时的性能的建议,例如使用内存管理策略和流式写入。 13. **PDF/A...

    Android使用iText生成pdf并读取pdf内容

    通过学习和理解iText的基本API,开发者可以创建丰富的PDF文档,并从现有PDF中提取所需的信息。不过,考虑到Android的内存限制和性能,使用iText时要注意优化资源管理和处理时间,以确保良好的用户体验。

    itext 生成pdf 目录

    - 确保每个书签都有一个对应的目标位置,否则在PDF中点击书签可能无法正确跳转。 - 避免内存泄漏,尤其是在处理大量书签时,要及时释放资源。 - 书签层次不宜过深,以免影响用户体验。 - 考虑兼容性和版本问题,确保...

    iText-解析PDF与RTF文件

    iText是一个能够快速产生PDF文件的java类库。iText的java类对于那些要产生包含文本,表格,图形的只读文档是很有用的。它的类库尤其与javaServlet有很好的给合。使用iText与PDF能够使你正确的控制Servlet的输出。

    java使用itextpdf、itext-asian对pdf文件加水印

    2. **创建PDF文档读写对象**:使用`PdfReader`读取源PDF文件,然后用`PdfStamper`创建一个可写对象,允许我们向PDF中添加新的内容。 ```java FileInputStream fis = new FileInputStream("源文件路径"); PdfReader ...

Global site tag (gtag.js) - Google Analytics