Java使用itext
解析pdf
签章
前言
许多业务交易(包括金融、法律和其他受管制交易)都要求在对文档进行签名时提供较高程度的保证。当以电子方式分发文档时,收件人务必可以:
- 验证文档真实性 — 确认对文档进行签名的每个人的身份
- 验证文档完整性 — 确认在传输过程中文档未被更改
那么我们怎么通过程序鉴别一个带有电子签章的pdf签章的有效性呢?
电子签章
电子签章有签名时间,签章有效期起止时间,从这三个时间我们就可以看一些基本的签章有效性和时间是否合理(是否被篡改)。
解析电子签章
我们利用itext
来解析电子签章。
读取加载pdf
通过读取pdf的url,将内容加载到流中
1 | public static InputStream getInputStreamByUrl(String strUrl) { |
解析签章时间
我们主要用到com.itextpdf.text.pdf
里的三个:AcroFields
、PdfReader
、security.PdfPKCS7
1 | import com.google.gson.Gson; |
签章有效性
这样我们可以获取到三个时间了,一般可以通过签名时间和有效期时间是否为同一天或者看当前日期是否在有效期内来判断签章的有效期行,此外我们也可以利用函数来判断:
1 | PdfPKCS7 pkcs7 = fields.verifySignature(name); // 获取签名的pkcs7数据 |
小结
有时候我们设计到pdf合同的有效性的时候,可以用itextpdf
来读取解析其签章时间来判定合同签章的有效性。