企业公章图片在电子签章业务中应用广泛,在电子签章应用过程中首先需要生成公章图片,然后再使用公章图片结合数字签名技术完成电子签,这样就实现了从可视化到不可篡改的数字化电子签章功能,以下是企业公章图片生成源代码。
点击查看代码
import com.resrun.utils.Base64;
import org.apache.pdfbox.io.IOUtils;
import 服务器托管网org.springframework.stereotype.Service;
import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.*;
/**
* @Description: 企业签章业务
* @Package: com.resrun.service.image
* @ClassName: EntSealGenerateService
* @copyright 北京资源律动科技有限公司
*/
@Service
public class EntSealGenerateService {
/**
* @Description #生成企业签章
* @Param [topText, middleText]
* @return byte[]
**/
public byte[] generateEntSeal(String topText,String middleText){
byte[] bytes = export2pic("png", middleText,topText);
return bytes;
}
/**
* 印章名称距中心点偏移量,按照y轴方向
*/
private int nameOffset = 50;
/**
* 印章宽度
*/
private int width = 200;
/**
* 印章高度
*/
private int height = 200;
/**
* 印章中心标志(默认为五角星)外接圆半径
*/
private float radius = 30;
/**
* 印章名称颜色
*/
服务器托管网private Color nameColor = Color.RED;
/**
* 印章所属单位
*/
// private String firm;
/**
* 印章所属单位颜色
*/
private Color firmColor = Color.RED;
private float firmScale = 0.7F;
/**
* 边框线宽
*/
private float borderWidth = 5F;
/**
* 边框颜色
*/
private Color borderColor = Color.RED;
/**
* 印章标记(默认为五角星)线宽
*/
private float signBorderWidth = 3F;
/**
* 印章标记颜色
*/
private Color signBorderColor = Color.RED;
/**
* 印章标记填充颜色
*/
private Color signFillColor = Color.RED;
public void draw(Graphics2D g2d,String middleText,String topText) {
// 把绘制起点挪到圆中心点
g2d.translate(width / 2, height / 2);
Stroke stroke = g2d.getStroke();// 旧的线性
// 填充五角星
Polygon polygon = getPentaclePoints(radius);
if (signFillColor != null) {
g2d.setColor(signFillColor);
g2d.fill(polygon);
}
// 绘制五角星边框
g2d.setStroke(new BasicStroke(signBorderWidth));
g2d.setColor(signBorderColor);
g2d.draw(polygon);
// 绘制印章边框
g2d.setFont(nameFont);
g2d.setColor(borderColor);
g2d.setStroke(new BasicStroke(borderWidth));
g2d.drawOval(-width / 2, -height / 2, width, height);
g2d.setStroke(stroke);
// 绘制印章名称
g2d.setFont(nameFont);
g2d.setColor(nameColor); //g2d.setStroke(new BasicStroke(10F));
FontMetrics fm = g2d.getFontMetrics();
int w = fm.stringWidth(middleText);// 名称宽度
int h = fm.getHeight();// 名称高度
int y = fm.getAscent() - h / 2;// 求得中心线经过字体的高度的一半时的字体的起绘点
g2d.drawString(middleText, -w / 2, y + nameOffset);
// 绘制印章单位
g2d.setFont(getFirmFont(topText));
g2d.setColor(firmColor);
fm = g2d.getFontMetrics();
h = fm.getHeight();// 字高度
int count = topText.length();// 字数
int r = width / 2;// 半径,就假设此印章是个矩形,方便计算
float angle;
float start;
if(count>1 && count 10){
angle = (360 - firmAngle) / (count-1);// 字间角度
start = 90+(360 - angle*(count-1))/2;// 以x轴正向为0,顺时针旋转
}else{
angle = 0f;// 字间角度
start = 90+(360 - angle*(2-1))/2;// 以x轴正向为0,顺时针旋转
}
double vr = Math.toRadians(90);// 垂直旋转弧度
char[] chars = topText.toCharArray();
for (int i = 0; i 1 && len3 && len6 && len 10 && len13 && len20 && len 25 && len =30 && len
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.fwqtg.net
相关推荐: 22. 从零用Rust编写正反向代理,一个数据包的神奇HTTP历险记!
wmproxy wmproxy已用Rust实现http/https代理, socks5代理, 反向代理, 静态文件服务器,四层TCP/UDP转发,内网穿透,后续将实现websocket代理等,会将实现过程分享出来,感兴趣的可以一起造个轮子 项目地址 国内: h…