合肥网站关键词优化公司阳江网站建设 公司价格
- 作者: 五速梦信息网
- 时间: 2026年03月21日 10:57
当前位置: 首页 > news >正文
合肥网站关键词优化公司,阳江网站建设 公司价格,wordpress js放到oss,品牌内容包括哪些以下代码详细说明如何使用数字证书对PDF电子文件进行数字签名/盖章。PDF文件签署主要传递PDF文件#xff0c;数字证书信息#xff0c;签章图片3个信息。代码中需要的文件、数字证书、签章图片可访问开放签电子签章开源系统详细了解系统的实现与效果。也可通过gitee开源社区下…以下代码详细说明如何使用数字证书对PDF电子文件进行数字签名/盖章。PDF文件签署主要传递PDF文件数字证书信息签章图片3个信息。代码中需要的文件、数字证书、签章图片可访问开放签电子签章开源系统详细了解系统的实现与效果。也可通过gitee开源社区下载开放签开源电子签章系统获取所有开源代码。 1、数字签名/盖章类SignService.java import com.itextpdf.text.DocumentException; import com.itextpdf.text.Image; import com.itextpdf.text.Rectangle; import com.itextpdf.text.pdf.PdfReader; import com.itextpdf.text.pdf.PdfSignatureAppearance; import com.itextpdf.text.pdf.PdfStamper; import com.itextpdf.text.pdf.security.; import com.resrun.service.pojo.CertificateProperty; import com.resrun.service.pojo.RealPositionProperty; import org.bouncycastle.jce.provider.BouncyCastleProvider; import org.springframework.stereotype.Service;import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.security.GeneralSecurityException; import java.security.KeyStore; import java.security.PrivateKey; import java.security.Security; import java.security.cert.Certificate;/** Description: 签署业务* Package: com.resrun.service.pdf* ClassName: SignService* copyright 北京资源律动科技有限公司 www.kaifangqian.com/ Service public class SignService {public byte[] signingContract(byte[] pdfFile, byte[] signBadge, CertificateProperty cert,RealPositionProperty position) throws GeneralSecurityException, IOException, DocumentException {System.setProperty(javax.xml.parsers.DocumentBuilderFactory,com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl);Security.addProvider(new BouncyCastleProvider());//1、解析证书// Java 安全属性文件中指定的默认 keystore 类型如果不存在此类属性则返回字符串 jks。 PKCS12KeyStore ks KeyStore.getInstance(cert.getCertType());try {char[] chars cert.getPassword().toCharArray();ByteArrayInputStream byteArrayInputStream new ByteArrayInputStream(cert.getCertFile());ks.load(byteArrayInputStream, chars);} catch (Exception e) {e.printStackTrace();}// 获取keystore中的所有别名String alias (String) ks.aliases().nextElement();// 返回请求的密钥 入力参数别名用于恢复密钥的密码PrivateKey pk (PrivateKey) ks.getKey(alias, cert.getPassword().toCharArray());// 证书链按用户证书在前根证书授权在后的顺序Certificate[] chain ks.getCertificateChain(alias);byte[] signedFileByte null ;PdfReader reader null ;ByteArrayOutputStream signedFile null ;PdfStamper stamper null ;try {//2、读取PDF文件reader new PdfReader(pdfFile);signedFile new ByteArrayOutputStream();stamper PdfStamper.createSignature(reader, signedFile, \0, null, true);//3、给签署属性服务PdfSignatureAppearance appearance stamper.getSignatureAppearance();if (signBadge null || position null) {appearance.setCertificationLevel(certificationLevel);} else {int pageNum 0;if (inspect) {//如果检查就会抛出检查异常pageNum position.getPageNum();if (pageNum 0)throw new IllegalArgumentException(Pdf page number must be greater than one….!!!);} else {pageNum position.getPageNum() 0 ? 1 : position.getPageNum();}appearance.setVisibleSignature(new Rectangle(position.getStartx(), position.getStarty(), position.getEndx(), position.getEndy()), pageNum, null);// 添加签章图片Image img Image.getInstance(signBadge);appearance.setSignatureGraphic(img);appearance.setImageScale(-1);appearance.setCertificationLevel(certificationLevel);appearance.setRenderingMode(renderingMode);}appearance.setReason(reason);appearance.setLocation(location);//4、调用签署 Creating the signatureExternalSignature pks new PrivateKeySignature(pk, hashAlgorithm, BouncyCastleProvider.PROVIDER_NAME);ExternalDigest digest new BouncyCastleDigest();MakeSignature.signDetached(appearance, digest, pks, chain, null, ocspClient, tsaClient, 0, cryptoStandard);signedFileByte signedFile.toByteArray();} catch (Exception e){e.printStackTrace();}finally {// 关闭流if (stamper ! null) stamper.close();if (signedFile ! null) signedFile.close();if (reader ! null) reader.close();}return signedFileByte ;}//是否判断校验不校验PDF页码private boolean inspect true;private int certificationLevel PdfSignatureAppearance.NOT_CERTIFIED;private PdfSignatureAppearance.RenderingMode renderingMode PdfSignatureAppearance.RenderingMode.GRAPHIC;private String hashAlgorithm DigestAlgorithms.SHA256;private MakeSignature.CryptoStandard cryptoStandard MakeSignature.CryptoStandard.CMS;private String reason 防伪造防篡改数字校验; //原因private String location; //位置private TSAClient tsaClient; //时间戳服务private OcspClient ocspClient;public boolean isInspect() {return inspect;}public void setInspect(boolean inspect) {this.inspect inspect;}public int getCertificationLevel() {return certificationLevel;}public void setCertificationLevel(int certificationLevel) {this.certificationLevel certificationLevel;}public PdfSignatureAppearance.RenderingMode getRenderingMode() {return renderingMode;}public void setRenderingMode(PdfSignatureAppearance.RenderingMode renderingMode) {this.renderingMode renderingMode;}public String getHashAlgorithm() {return hashAlgorithm;}public void setHashAlgorithm(String hashAlgorithm) {this.hashAlgorithm hashAlgorithm;}public MakeSignature.CryptoStandard getCryptoStandard() {return cryptoStandard;}public void setCryptoStandard(MakeSignature.CryptoStandard cryptoStandard) {this.cryptoStandard cryptoStandard;}public String getReason() {return reason;}public void setReason(String reason) {this.reason reason;}public String getLocation() {return location;}public void setLocation(String location) {this.location location;}public TSAClient getTsaClient() {return tsaClient;}public void setTsaClient(TSAClient tsaClient) {this.tsaClient tsaClient;}public OcspClient getOcspClient() {return ocspClient;}public void setOcspClient(OcspClient ocspClient) {this.ocspClient ocspClient;}} 2、证书文件属性类主要存储证书信息CertificateProperty.java import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor;import java.io.Serializable;/** Description: 证书文件属性类* Package: com.resrun.service.pojo* ClassName: CertificateProperty* copyright 北京资源律动科技有限公司/ AllArgsConstructor NoArgsConstructor Data public class CertificateProperty implements Serializable {private static final long serialVersionUID -2073805779543816269L;private byte[] certFile;/** 证书的类型 比如PKCS12和jks/private String certType;/** 证书密码 /private String password;} 3、签署位置信息类 import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import java.io.Serializable;/** Description: 经过计算后的文件签署位置属性类* Package: com.resrun.service.pojo* ClassName: PositionProperty* copyright 北京资源律动科技有限公司*/ AllArgsConstructor NoArgsConstructor Data public class RealPositionProperty implements Serializable {private static final long serialVersionUID 8586984409612483553L;/** 签章左下角x坐标 /private float startx;/** 签章左下角y坐标/private float starty;/** 签章右上角x坐标/private float endx;/** 签章右上角x坐标/private float endy;private int pageNum;// 填写值填写专用private String value ;//对齐方式private String align ;//字体private String fontFamily ;//文字大小private Integer fontSize ; }
- 上一篇: 合肥网站改版信誉好的中山网站建设
- 下一篇: 合肥网站建合肥网站建设找蓝领商务建设企业网站公
相关文章
-
合肥网站改版信誉好的中山网站建设
合肥网站改版信誉好的中山网站建设
- 技术栈
- 2026年03月21日
-
合肥网站改版淘宝推广引流方法有哪些
合肥网站改版淘宝推广引流方法有哪些
- 技术栈
- 2026年03月21日
-
合肥网站定制开发公司wordpress爆破软件
合肥网站定制开发公司wordpress爆破软件
- 技术栈
- 2026年03月21日
-
合肥网站建合肥网站建设找蓝领商务建设企业网站公
合肥网站建合肥网站建设找蓝领商务建设企业网站公
- 技术栈
- 2026年03月21日
-
合肥网站建设q.479185700惠无网站做cpa
合肥网站建设q.479185700惠无网站做cpa
- 技术栈
- 2026年03月21日
-
合肥网站建设服务做爰在线网站
合肥网站建设服务做爰在线网站
- 技术栈
- 2026年03月21日



