`
SwordShadow
  • 浏览: 271381 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

itext 给pdf文件签名

    博客分类:
  • java
阅读更多

如题,给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();
		}
	}
}

 

 效果图:(右下角图片原为签章,已修改为普通图片)



 点击右下角签章,弹出签名信息,如下图



 

欢迎大家积极交流

  • 大小: 15.9 KB
  • 大小: 10.2 KB
  • 大小: 15.7 KB
2
1
分享到:
评论
8 楼 aptjsheng 2015-11-10  
请问楼主,我现在只要做个签名域,不需要做到签名这部分,怎么搞啊??很急用!!!!!!!!    
7 楼 aptjsheng 2015-11-10  
请问楼主,我现在只要做个签名域,不需要做到签名这部分,怎么搞啊??很急用!!!!!!!!     
6 楼 a397935362 2015-04-28  
大神~~你这里有验签的程序么,或者说你验签使用什么工具?可以分享一下么。我最近在PDF写签名验签的功能,现在在验签部分有点问题,请指点一下
5 楼 null123456 2014-12-09  
问下 itext 支持多次数字签名吗
4 楼 SwordShadow 2014-09-18  
bqlin1987 写道
請問大哥如何生成p12文件?



JDK 自带工具可以生成证书,详情 google
3 楼 bqlin1987 2014-09-18  
請問大哥如何生成p12文件?
2 楼 SwordShadow 2013-11-29  
jcxdxg 写道
怎么隐藏图片后面的文字信息,还有默认的图片啊

什么意思?我看不明白,签名的效果就是一张图片覆盖在页面上,点击可以查看证书
1 楼 jcxdxg 2013-11-28  
怎么隐藏图片后面的文字信息,还有默认的图片啊

相关推荐

    使用itext生成PDF文件

    在IT行业中,生成PDF文件是一项常见的任务,特别是在报表、文档管理和电子书制作等领域。iText是一个流行的Java库,用于创建和修改PDF文档。本篇文章将详细介绍如何使用iText库生成PDF文件,以及在这个过程中可能...

    java多种方式实现pdf文件电子签名

    PDF文件的电子签名是现代数字化世界中确保文档完整性和不可篡改性的重要手段。Java作为广泛应用的编程语言,提供了多种库来实现PDF的电子签名功能。在这个项目中,我们主要探讨了利用iTextPDF和PDFBox两个库在Java...

    iText_pdf.rar_iText pdf_itext PDF类

    在描述中提到的“iText可以制作中文PDF文件的JAVA源程序”,意味着这个压缩包可能包含示例代码或教程,展示了如何使用iText库在Java程序中创建包含中文字符的PDF文档。通常,处理中文字符需要正确配置字体资源,并...

    PDF数字签名(ITEXT+keytool)

    - 保存签名后的PDF文件 了解以上知识点后,你将能够创建一个能够生成和验证PDF数字签名的系统。这对于保护敏感信息,确保法律文件的合法性,或者在分布式环境中验证文档的完整性和来源都至关重要。通过Java和ITEXT...

    IText解析PDF文件

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

    freemarker+itext生成PDF

    这篇博客 "freemarker+itext生成PDF" 可能详细介绍了如何结合这两者来生成PDF文件,这在报表生成、发票打印或任何需要静态化输出的场景中非常有用。 首先,让我们了解FreeMarker。FreeMarker是一个基于模板的语言,...

    iText PDF中文字体文件.rar

    本教程将深入探讨如何在Java中使用iText PDF插件处理中文字符,以及如何引入中文字体文件,创建不同大小和风格的中文字体。 首先,让我们理解`iText PDF`。iText是一个开源的Java库,它提供了一系列API用于构建PDF...

    itextpdf.jar

    例如,通过数字签名,可以确保PDF文件的完整性和来源的真实性;通过加密,可以保护敏感信息不被未经授权的人员访问。 在实际开发中,iTextPDF库易于集成,提供了丰富的示例和文档,使得开发者能够快速上手。同时,...

    itext生成PDF开发文档

    在 Java 开发中,iText 提供了丰富的 API,使得开发者可以方便地在代码中创建 PDF 文件、添加文本、图像、表格、链接等元素,甚至进行数字签名和表单处理。在本项目中,我们看到使用了 iText 7.0.2 版本,这是 iText...

    iText PDF pdf文档生成itext5.5.11.zip,itxt-asian5.20.jar,加水印,去水印代码,功能强大。

    iText5-itextpdf-5.5.11.jar是主要的库文件,包含了大部分的功能实现;iText5-xmlworker-5.5.11.jar则用于处理HTML到PDF的转换,使得你可以将网页内容轻松转换为PDF格式。 2. itext-asian5.20.jar:这个库是iText的...

    itextpdf签章示例

    然而,为了确保PDF文件的完整性和安全性,有时我们需要对其进行数字签名,即“签章”。这里我们将深入探讨如何使用iTextPDF库在Java环境中实现PDF签章的功能。 iTextPDF是一个强大的开源Java库,专门用于创建、编辑...

    itextpdf jar包

    4. **数字签名和安全性**:iTextPDF提供了数字签名的功能,可以确保PDF文档的完整性和防止篡改。此外,它还能设置访问权限,限制他人对PDF的复制、编辑等操作。 5. **PDF版面管理**:通过布局对象(如Paragraph、...

    itext实现pdf打印之二

    在“iText实现PDF打印之二”这篇博文中,作者可能进一步介绍了如何利用iText来打印PDF文件,这通常涉及到以下几个关键步骤: 1. **初始化PDFDocument对象**:这是创建PDF文档的第一步,我们需要实例化一个...

    itextpdf 导出pdf 表格 自动分页中文 目录

    iTextPDF是一个Java库,专门用于创建、编辑和处理PDF文档,而`iText-asian-5.2.0.jar`和`itextpdf-5.5.5.jar`是iText库的不同版本,用于支持中文字符和其他亚洲语言。 1. **iTextPDF**: iTextPDF是iText项目的一...

    使用itext生成pdf需要的jar包

    1. iText主库:`itextpdf-版本号.jar` - 这是iText的核心库,包含了生成PDF的所有基本功能。 2. Bouncy Castle库:`bcprov-jdk15on-版本号.jar` - iText在处理加密和数字签名时依赖Bouncy Castle库,因此需要将其...

    使用iText生成PDF.doc

    通过iText,开发者可以轻松创建包含文本、图像、表格等各种元素的PDF文件。以下是一些关于如何使用iText生成PDF的关键知识点: 1. **安装与获取iText**: 要使用iText,首先需要从其官方源代码托管平台SourceForge...

    itextpdf.zip(JavaPDF文件生成)

    本篇文章将深入探讨如何使用iTextPDF库来创建和操作PDF文件。 首先,我们来了解PDF(Portable Document Format)格式。PDF是一种跨平台的文件格式,用于呈现文档,包括文本格式和图像,以一种独立于应用软件、硬件...

    itextpdf.zip

    2. **itextpdf-5.5.5.jar**:这是iTextPDF的主要库文件,版本为5.5.5。iTextPDF允许开发者在Java环境中创建、修改和操作PDF文档。它提供了丰富的API,可以用于生成表格、添加图片、设置字体、创建链接、插入签名、...

    iText中文帮助文档_itext中文帮助文档_itext_iTextpdf_itext中文文档_

    这个中文帮助文档提供了详细的指导,帮助开发者理解和使用iText来创建包含丰富内容的PDF文件。以下是对iText库和文档中涉及的关键知识点的详细解释: 1. **iText基本概念**: - **PDF(Portable Document Format)...

Global site tag (gtag.js) - Google Analytics