`

使用itext5进行文字或图片签章

 
阅读更多

 记录一下使用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库生成PDF并利用证书进行签章,确保文档的完整性和不可篡改性。 首先,iText是一个强大的开源Java库,专门用于创建、修改和处理PDF文档。它提供了一系列API,使得开发者可以方便地实现...

    itextpdf签章示例

    要使用iTextPDF进行签章操作,你需要首先引入以下依赖项: 1. itextpdf-5.5.0.jar:这是iTextPDF的核心库,包含了创建和修改PDF文档的主要功能。 2. bcpkix-jdk15on-1.64.jar:这是一个来自Bouncy Castle的加密库,...

    itext5生成PDF(含水印文字及图片)

    itext5生成PDF(含水印文字及图片)的源代码,操作说明详细,代码完整可用。

    itextpdf电子签章.zip

    同时,可以使用`setStampVisibleAppearance`来定制签章的视觉效果,如添加文字、图像或图标。 对于描述中的“支持利用检索文件某内容实现签章”,这意味着签章可以根据文档内的特定内容(如落款或私章)自动定位。...

    java使用IText导出PDF(包含图片、表格、文字等等Demo和依赖包)

    Java使用IText库导出PDF是一项常见的任务,特别是在需要生成报告、文档或发票等静态内容时。IText是一个强大的PDF库,它允许开发者在Java环境中创建、修改和处理PDF文档。下面将详细介绍如何使用IText库来实现这个...

    Itext5文本转PDF,含图片,代码实例

    Itext5文本转PDF,含图片,代码实例,是5版本的,含亚洲文字支持,有文本,图片转pdf的实例,支持自定义编码,整理好的,直接能用,乱码是因为编码不对,设置编码就好了,具体百度怎样设置编码,里面有设置编码的接口...

    IText.Pdf-CheckPdf的签章-参考Demo.rar

    本文将详细探讨如何使用IText库进行PDF文档的签名验证,以及如何参考提供的"IText.Pdf-CheckPdf的签章-参考Demo"进行操作。 首先,IText是一个强大的Java库,专门用于处理PDF文档,包括创建、编辑和读取PDF文件。其...

    使用itext操作pdf文档(创建、签章、斜字水印、文本替换)

    这篇博客文章(https://llade.iteye.com/blog/2397480)详细介绍了如何使用iText进行这些操作。 首先,创建PDF文档。iText提供了一个名为PdfWriter的类,可以用来创建一个新的PDF文档。你需要创建一个PdfDocument...

    itext往word里插入图片和画表格

    在这个场景中,我们将探讨如何使用iText在Word文档中插入图片和绘制表格。 首先,理解一个关键概念:iText本身并不直接支持Word格式。然而,由于Word文档可以被转换为或从OpenXML格式解析,我们可以通过处理这些XML...

    itextpdf在已有pdf指定页及位置添加图片(包含jar及实例)

    5. **添加图片**:使用`Image.getInstance()`方法加载图片,并设置其在PDF中的位置。你可以通过`setAbsolutePosition(x, y)`方法指定图片的左下角坐标,这里的x和y是相对于页面的像素值。 6. **关闭流**:完成图片...

    使用iText-2.0.8将Html转换为pdf,带图片功能

    - 使用`com.itextpdf.text.Image.getInstance()`方法加载本地或网络上的图片。如果是网络图片,可能需要先下载到本地再加载。 - 注意处理图片尺寸,可能需要调整大小以适应PDF页面。 3. **构造PDF文档**: - ...

    IText5 Excel转pdf ,带有添加文字水印,图片水印实例poi-3.9,itextpdf-5.5.9

    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 ...

    itext5 jar 包

    **itextpdf-5.3.0.jar** 是核心库文件,包含了运行时所需的类和资源,它是iText5的核心组件,用于在Java应用程序中直接引用和使用。 **itext-xtra-5.3.0-javadoc.jar** 和 **itext-xtra-5.3.0-sources.jar** 文件则...

    itext7 pdf转图片

    在IT行业中,iText是一个广泛使用的Java和.NET库,用于创建、编辑和处理PDF文档。在最新的版本iText 7中,它提供了丰富的功能,包括将PDF文档转换为图像。这个话题涉及到PDF处理和图像转换两个核心领域。下面将详细...

    利用ITEXT、PDFBOX将PDF转为图片

    5. **保存图片**:`renderImageWithDPI`方法返回一个`BufferedImage`对象,你可以使用Java的`ImageIO`类将其保存为JPG、PNG等常见图片格式。 ```java File outputFolder = new File("output_images"); if (!output...

    itext图片转pdf

    可以使用`image.scalePercent()`或`image.scaleToFit()`方法来调整图片大小。例如: ```java float ratio = (float) image.getHeight() / image.getWidth(); float targetWidth = 500f; // 目标宽度 float ...

    itext将图片生成PDF(高清版)

    5. 加载图片:使用`com.itextpdf.text.Image`类加载图片,例如,`Image.getInstance("image.png")`。这里可以设置图片的DPI,如`image.setDpi(300, 300)`,以确保高清效果。 6. 缩放图片:`iText`提供了三种缩放...

    完整的利用itext5、zxing、QRCore制作pdf、二维码图片插入pdf,并解析pdf中的二维码信息

    这里我们关注的是如何使用iText5、ZXing和QRCore这三款工具来实现这一目标。首先,iText5是一款强大的Java库,主要用于创建和编辑PDF文档,而ZXing(Zebra Crossing)是一个开源的条码读取库,支持多种条码格式,...

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

    由于Android对大型库的支持有限,建议使用iText的精简版iTextG: ```groovy dependencies { implementation 'com.itextpdf:itextg:5.5.13' } ``` 接下来,我们来讨论如何生成PDF。在Android中,通常会使用`...

    itext5 生成pdf 使用总结

    itext5 生成pdf 使用总结

Global site tag (gtag.js) - Google Analytics