记录一下使用iText5组件进行pdf文字或图片签章
库文件:bcmail-jdk14-1.38.jar, bcpkix-jdk15on-1.54.jar, bcprov-jdk14-1.38.jar, bcprov-jdk15on-1.54.jar,itext-asian-5.2.0.jar,itextpdf-5.5.12.jar
输入:自建的PDF文件、pkcs12密钥证书、自定义签章图片、自定义文字信息、外部字体
输出:签章后的PDF文件
用途:PDF浏览器可以识别该文件在Signature之后是否被修改过
KeyStore ks = KeyStore.getInstance("PKCS12");
ks.load(new FileInputStream("D:/ex/pdfsign2.p12"), "123456".toCharArray());//STOREPASS,密钥库
String alias = ks.aliases().nextElement();
PrivateKey pk = (PrivateKey) ks.getKey(alias,"123456".toCharArray() );//KEYPASS ,私钥
Certificate[] cer = ks.getCertificateChain(alias); //证书
PdfReader read = new PdfReader("d:/ex/test2.pdf");
FileOutputStream os = new FileOutputStream("d:/ex/test2_sig.pdf");
PdfStamper pstp = PdfStamper.createSignature(read, os, '\0', null, true);//签证工具类对象,true表示可以反复签章(详见http://itextsupport.com/apidocs/itext5)
PdfSignatureAppearance psa = pstp.getSignatureAppearance(); //签章属性对象
Image img = Image.getInstance("D:\\0001_ICONS\\bee.jpg");
psa.setSignatureGraphic(img); //签章图片
psa.setReason("Private Reason[个人原因]");
psa.setLocation("太阳系地球北半球东经120°");
psa.setVisibleSignature(new Rectangle(180, 100, 650, 170),1,"sigflag1");
psa.setSignDate(Calendar.getInstance());
psa.setRenderingMode(RenderingMode.GRAPHIC_AND_DESCRIPTION);
psa.setCertificationLevel(PdfSignatureAppearance.CERTIFIED_FORM_FILLING_AND_ANNOTATIONS);
BaseFont f3 = BaseFont.createFont("fonts/MSYH.TTF", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);//外部字体
//BaseFont f = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
psa.setLayer2Font(new Font(f3,10,Font.NORMAL,BaseColor.BLUE));
ExternalDigest dg = new BouncyCastleDigest(); //摘要算法
ExternalSignature es = new PrivateKeySignature(pk,DigestAlgorithms.SHA1,null);//签名算法
MakeSignature.signDetached(psa, dg, es, cer, null, null, null, 0, CryptoStandard.CMS);//签章
JOptionPane.showMessageDialog(null, "完成!");
/**
* 密钥建立
* keytool -genkey -v -alias merrickpdfsign2 -keyalg RSA -storetype PKCS12 -keystore D:/ex/pdfsign2.p12 -storepass 123456 -keypass 123456
* */
相关推荐
本文将详细探讨如何使用iText库生成PDF并利用证书进行签章,确保文档的完整性和不可篡改性。 首先,iText是一个强大的开源Java库,专门用于创建、修改和处理PDF文档。它提供了一系列API,使得开发者可以方便地实现...
要使用iTextPDF进行签章操作,你需要首先引入以下依赖项: 1. itextpdf-5.5.0.jar:这是iTextPDF的核心库,包含了创建和修改PDF文档的主要功能。 2. bcpkix-jdk15on-1.64.jar:这是一个来自Bouncy Castle的加密库,...
itext5生成PDF(含水印文字及图片)的源代码,操作说明详细,代码完整可用。
同时,可以使用`setStampVisibleAppearance`来定制签章的视觉效果,如添加文字、图像或图标。 对于描述中的“支持利用检索文件某内容实现签章”,这意味着签章可以根据文档内的特定内容(如落款或私章)自动定位。...
Java使用IText库导出PDF是一项常见的任务,特别是在需要生成报告、文档或发票等静态内容时。IText是一个强大的PDF库,它允许开发者在Java环境中创建、修改和处理PDF文档。下面将详细介绍如何使用IText库来实现这个...
Itext5文本转PDF,含图片,代码实例,是5版本的,含亚洲文字支持,有文本,图片转pdf的实例,支持自定义编码,整理好的,直接能用,乱码是因为编码不对,设置编码就好了,具体百度怎样设置编码,里面有设置编码的接口...
本文将详细探讨如何使用IText库进行PDF文档的签名验证,以及如何参考提供的"IText.Pdf-CheckPdf的签章-参考Demo"进行操作。 首先,IText是一个强大的Java库,专门用于处理PDF文档,包括创建、编辑和读取PDF文件。其...
这篇博客文章(https://llade.iteye.com/blog/2397480)详细介绍了如何使用iText进行这些操作。 首先,创建PDF文档。iText提供了一个名为PdfWriter的类,可以用来创建一个新的PDF文档。你需要创建一个PdfDocument...
在这个场景中,我们将探讨如何使用iText在Word文档中插入图片和绘制表格。 首先,理解一个关键概念:iText本身并不直接支持Word格式。然而,由于Word文档可以被转换为或从OpenXML格式解析,我们可以通过处理这些XML...
**itextpdf-5.3.0.jar** 是核心库文件,包含了运行时所需的类和资源,它是iText5的核心组件,用于在Java应用程序中直接引用和使用。 **itext-xtra-5.3.0-javadoc.jar** 和 **itext-xtra-5.3.0-sources.jar** 文件则...
- 使用`com.itextpdf.text.Image.getInstance()`方法加载本地或网络上的图片。如果是网络图片,可能需要先下载到本地再加载。 - 注意处理图片尺寸,可能需要调整大小以适应PDF页面。 3. **构造PDF文档**: - ...
IText5 Excel转pdf ,带有添加文字水印,图片水印实例。 * jar版本:poi-3.9-20121203.jar, poi-ooxml-3.9-20121203.jar, * poi-ooxml-schemas-3.9-20121203.jar, itextpdf-5.5.9.jar, itext-asian-5.2.0.jar ...
5. **保存图片**:`renderImageWithDPI`方法返回一个`BufferedImage`对象,你可以使用Java的`ImageIO`类将其保存为JPG、PNG等常见图片格式。 ```java File outputFolder = new File("output_images"); if (!output...
5. **添加图片**:使用`Image.getInstance()`方法加载图片,并设置其在PDF中的位置。你可以通过`setAbsolutePosition(x, y)`方法指定图片的左下角坐标,这里的x和y是相对于页面的像素值。 6. **关闭流**:完成图片...
可以使用`image.scalePercent()`或`image.scaleToFit()`方法来调整图片大小。例如: ```java float ratio = (float) image.getHeight() / image.getWidth(); float targetWidth = 500f; // 目标宽度 float ...
5. 加载图片:使用`com.itextpdf.text.Image`类加载图片,例如,`Image.getInstance("image.png")`。这里可以设置图片的DPI,如`image.setDpi(300, 300)`,以确保高清效果。 6. 缩放图片:`iText`提供了三种缩放...
在IT行业中,iText是一个广泛使用的Java和.NET库,用于创建、编辑和处理PDF文档。在最新的版本iText 7中,它提供了丰富的功能,包括将PDF文档转换为图像。这个话题涉及到PDF处理和图像转换两个核心领域。下面将详细...
这里我们关注的是如何使用iText5、ZXing和QRCore这三款工具来实现这一目标。首先,iText5是一款强大的Java库,主要用于创建和编辑PDF文档,而ZXing(Zebra Crossing)是一个开源的条码读取库,支持多种条码格式,...
由于Android对大型库的支持有限,建议使用iText的精简版iTextG: ```groovy dependencies { implementation 'com.itextpdf:itextg:5.5.13' } ``` 接下来,我们来讨论如何生成PDF。在Android中,通常会使用`...
java使用iText导出PDF文本绝对定位(实现方法) iText是一个流行的Java类库,用于生成PDF文档。下面我们将探讨如何使用iText在Java中导出PDF文本,并实现绝对定位。 iText简介 iText是一个开源的Java类库,用于...