如题,给pdf文件添加数字签名
工具包:itextpdf-5.1.3.jar 等
方式:读取一个需要添加签名的源文件,输出成功的签名后的文件
import java.io.*; import java.security.*; import com.itextpdf.text.*; public class signPDF { public static void sign() throws Exception { KeyStore ks = KeyStore.getInstance("pkcs12"); ks.load(new FileInputStream("demo.p12"),"123456".toCharArray()); //123456为私钥密码 String alias = (String) ks.aliases().nextElement(); PrivateKey key = (PrivateKey) ks.getKey(alias, "123456".toCharArray()); Certificate[] chain = ks.getCertificateChain(alias); PdfReader reader = new PdfReader("demo.pdf"); //源文件 FileOutputStream fout = new FileOutputStream("z.pdf"); PdfStamper stp = PdfStamper.createSignature(reader, fout, '\0'); PdfSignatureAppearance sap = stp.getSignatureAppearance(); sap.setCrypto(key, chain, null, PdfSignatureAppearance.VERISIGN_SIGNED); sap.setReason(""); sap.setLocation(""); //添加位置信息,可为空 sap.setContact("http://swordshadow.iteye.com/"); Image image = Image.getInstance("sign.png"); //使用png格式透明图片 sap.setSignatureGraphic(image); sap.setAcro6Layers(true); sap.setRenderingMode(RenderingMode.GRAPHIC); sap.setVisibleSignature(new Rectangle(300, 600, 400, 675), 1, null); //300和600 是对应x轴和y轴坐标 stp.getWriter().setCompressionLevel(5); if (stp != null) { stp.close(); } if (fout != null) { fout.close(); } if (reader != null) { reader.close(); } } public static void main(String[] args) { try { sign(); System.out.println("done!!"); } catch (Exception e) { e.printStackTrace(); } } }
效果图:(右下角图片原为签章,已修改为普通图片)
点击右下角签章,弹出签名信息,如下图
欢迎大家积极交流
相关推荐
在IT行业中,生成PDF文件是一项常见的任务,特别是在报表、文档管理和电子书制作等领域。iText是一个流行的Java库,用于创建和修改PDF文档。本篇文章将详细介绍如何使用iText库生成PDF文件,以及在这个过程中可能...
PDF文件的电子签名是现代数字化世界中确保文档完整性和不可篡改性的重要手段。Java作为广泛应用的编程语言,提供了多种库来实现PDF的电子签名功能。在这个项目中,我们主要探讨了利用iTextPDF和PDFBox两个库在Java...
- 保存签名后的PDF文件 了解以上知识点后,你将能够创建一个能够生成和验证PDF数字签名的系统。这对于保护敏感信息,确保法律文件的合法性,或者在分布式环境中验证文档的完整性和来源都至关重要。通过Java和ITEXT...
### IText解析PDF文件 #### 一、PDF与iText简介 在《iText in Action》第二版书中,作者Bruno Lowagie介绍了如何利用iText这一强大的Java库来创建和操作PDF文档。本书覆盖了iText 5版本,并通过众多实例深入浅出地...
这篇博客 "freemarker+itext生成PDF" 可能详细介绍了如何结合这两者来生成PDF文件,这在报表生成、发票打印或任何需要静态化输出的场景中非常有用。 首先,让我们了解FreeMarker。FreeMarker是一个基于模板的语言,...
在描述中提到的“iText可以制作中文PDF文件的JAVA源程序”,意味着这个压缩包可能包含示例代码或教程,展示了如何使用iText库在Java程序中创建包含中文字符的PDF文档。通常,处理中文字符需要正确配置字体资源,并...
本教程将深入探讨如何在Java中使用iText PDF插件处理中文字符,以及如何引入中文字体文件,创建不同大小和风格的中文字体。 首先,让我们理解`iText PDF`。iText是一个开源的Java库,它提供了一系列API用于构建PDF...
例如,通过数字签名,可以确保PDF文件的完整性和来源的真实性;通过加密,可以保护敏感信息不被未经授权的人员访问。 在实际开发中,iTextPDF库易于集成,提供了丰富的示例和文档,使得开发者能够快速上手。同时,...
在 Java 开发中,iText 提供了丰富的 API,使得开发者可以方便地在代码中创建 PDF 文件、添加文本、图像、表格、链接等元素,甚至进行数字签名和表单处理。在本项目中,我们看到使用了 iText 7.0.2 版本,这是 iText...
然而,为了确保PDF文件的完整性和安全性,有时我们需要对其进行数字签名,即“签章”。这里我们将深入探讨如何使用iTextPDF库在Java环境中实现PDF签章的功能。 iTextPDF是一个强大的开源Java库,专门用于创建、编辑...
4. **数字签名和安全性**:iTextPDF提供了数字签名的功能,可以确保PDF文档的完整性和防止篡改。此外,它还能设置访问权限,限制他人对PDF的复制、编辑等操作。 5. **PDF版面管理**:通过布局对象(如Paragraph、...
在“iText实现PDF打印之二”这篇博文中,作者可能进一步介绍了如何利用iText来打印PDF文件,这通常涉及到以下几个关键步骤: 1. **初始化PDFDocument对象**:这是创建PDF文档的第一步,我们需要实例化一个...
iTextPDF是一个Java库,专门用于创建、编辑和处理PDF文档,而`iText-asian-5.2.0.jar`和`itextpdf-5.5.5.jar`是iText库的不同版本,用于支持中文字符和其他亚洲语言。 1. **iTextPDF**: iTextPDF是iText项目的一...
iText5-itextpdf-5.5.11.jar是主要的库文件,包含了大部分的功能实现;iText5-xmlworker-5.5.11.jar则用于处理HTML到PDF的转换,使得你可以将网页内容轻松转换为PDF格式。 2. itext-asian5.20.jar:这个库是iText的...
通过iText,开发者可以轻松创建包含文本、图像、表格等各种元素的PDF文件。以下是一些关于如何使用iText生成PDF的关键知识点: 1. **安装与获取iText**: 要使用iText,首先需要从其官方源代码托管平台SourceForge...
本篇文章将深入探讨如何使用iTextPDF库来创建和操作PDF文件。 首先,我们来了解PDF(Portable Document Format)格式。PDF是一种跨平台的文件格式,用于呈现文档,包括文本格式和图像,以一种独立于应用软件、硬件...
2. **itextpdf-5.5.5.jar**:这是iTextPDF的主要库文件,版本为5.5.5。iTextPDF允许开发者在Java环境中创建、修改和操作PDF文档。它提供了丰富的API,可以用于生成表格、添加图片、设置字体、创建链接、插入签名、...
1. iText主库:`itextpdf-版本号.jar` - 这是iText的核心库,包含了生成PDF的所有基本功能。 2. Bouncy Castle库:`bcprov-jdk15on-版本号.jar` - iText在处理加密和数字签名时依赖Bouncy Castle库,因此需要将其...
这个中文帮助文档提供了详细的指导,帮助开发者理解和使用iText来创建包含丰富内容的PDF文件。以下是对iText库和文档中涉及的关键知识点的详细解释: 1. **iText基本概念**: - **PDF(Portable Document Format)...