pdf电子签章+关键字匹配定位+多签章方式

 

 

前言

    代码很多都是参考网上有的(参考借鉴了下),融入自己遇到的需求,整理了下,

让大家少走点弯路。里面很多注释 没有详细注释,是因为带着关键字,百度很容易搜到解释。

    最主要的核心就是定位。虽然不能百分百解决,但是实用性还是有的

 

 

maven依赖

<!-- https://mvnrepository.com/artifact/fr.opensagres.xdocreport/org.apache.poi.xwpf.converter.pdf -->
		<!-- itext 2.1.7中使用 -->
		<!-- 解决word转pdf 位置错乱问题 -->
		<dependency>
			<groupId>fr.opensagres.xdocreport</groupId>
			<artifactId>org.apache.poi.xwpf.converter.pdf</artifactId>
			<version>1.0.6</version>
		</dependency>
		
		<!-- https://mvnrepository.com/artifact/fr.opensagres.xdocreport/org.apache.poi.xwpf.converter.pdf.itext5 -->
		<!-- word转pdf 位置会错乱 -->
		<!-- <dependency>
		    <groupId>fr.opensagres.xdocreport</groupId>
		    <artifactId>org.apache.poi.xwpf.converter.pdf.itext5</artifactId>
		    <version>1.0.6</version>
		</dependency> -->



		<!-- 电子证书生成 电子签章 -->
		<!-- https://mvnrepository.com/artifact/com.itextpdf/itextpdf -->
		<dependency>
		    <groupId>com.itextpdf</groupId>
		    <artifactId>itextpdf</artifactId>
		    <version>5.5.13</version>
		</dependency>
		
		<!-- https://mvnrepository.com/artifact/com.itextpdf/itext-pdfa -->
		<dependency>
		    <groupId>com.itextpdf</groupId>
		    <artifactId>itext-pdfa</artifactId>
		    <version>5.5.13</version>
		</dependency>
				
		<!-- https://mvnrepository.com/artifact/org.bouncycastle/bcprov-jdk15on -->
		<dependency>
		    <groupId>org.bouncycastle</groupId>
		    <artifactId>bcprov-jdk15on</artifactId>
		    <version>1.60</version>
		</dependency>
		
		<!-- https://mvnrepository.com/artifact/org.bouncycastle/bcpkix-jdk15on -->
		<dependency>
		    <groupId>org.bouncycastle</groupId>
		    <artifactId>bcpkix-jdk15on</artifactId>
		    <version>1.60</version>
		</dependency>

 

签章主方法

        /**                                                                                                                                                                                                    
	 *                                                                                                                                                                                                     
	 * @param inputStream                                                                                                                                                                                  
	 *            需要签章的pdf 输入流                                                                                                                                                                             
	 * @param keyStoreStream                                                                                                                                                                               
	 *            证书输入流                                                                                                                                                                                    
	 * @param keyStorePassword                                                                                                                                                                             
	 *            证书密码                                                                                                                                                                                     
	 * @param signImage                                                                                                                                                                                    
	 *            签章图片(可以是文字生成的图片)                                                                                                                                                                         
	 * @param signKeyWord                                                                                                                                                                                  
	 *            签章关键字                                                                                                                                                                                    
	 * @param reason                                                                                                                                                                                       
	 *            签订原因                                                                                                                                                                                     
	 * @param location                                                                                                                                                                                     
	 *            签订地址                                                                                                                                                                                     
	 * @throws GeneralSecurityException                                                                                                                                                                    
	 * @throws IOException                                                                                                                                                                                 
	 * @throws DocumentException                                                                                                                                                                           
	 */                                                                                                                                                                                                    
	public static ByteArrayOutputStream sign(InputStream inputStream, //                                                                                                                                   
			InputStream keyStoreStream, //                                                                                                                                                                 
			String keyStorePassword, //                                                                                                                                                                    
			Image signImage, //                                                                                                                                                                            
			String signKeyWord, //                                                                                                                                                                         
			String reason, //                                                                                                                                                                              
			String location) //                                                                                                                                                                            
			throws GeneralSecurityException, IOException, DocumentException {                                                                                                                              
                                                                                                                                                                                                           
		// 读取pdf内容                                                                                                                                                                                         
		PdfReader pdfReader = new PdfReader(inputStream);                                                                                                                                                  
		int pageNum = pdfReader.getNumberOfPages();                                                                                                                                                        
		// 签章位置对象                                                                                                                                                                                          
		List<RectangleCentre> rectangleCentreList = new LinkedList<>();                                                                                                                                    
                                                                                                                                                                                                           
		// 下标从1开始                                                                                                                                                                                          
		for (int page = 1; page <= pageNum; page++) {                                                                                        
  • 4
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值