/**
* 从SYS_ORG_ESEAL表获取电子签名
*
* @param
* @return
*/
public static byte[] getSealImage(String userId) {
//连接数据库
JdbcTemplate jdbcTemplate = StructuredDataUpdater.getJdbcTemplate();
//sys_user中获取电子签章
//获取上传签名照
String Sql = "select ESEAL.FJMC REAL_NM, ESEAL.FJ ELECTRONIC_PHOTO from sys_user_org o\n" +
"\t\tleft join sys_org org on org.org_id = o.org_id\n" +
"\t\tleft join SYS_ORG_ESEAL ESEAL on ESEAL.ORG_ID = org.sup_org_id\n" +
"\t\twhere o.user_id = ? ";
List<Map<String, Object>> list = SpringJdbcHelper.queryForList(jdbcTemplate, Sql, userId);
String result = "";
String signBase64 = null;
byte[] inArr = null;
if (list.size() > 0) {
String realNm = ObjectUtils.toString(list.get(0).get("REAL_NM"));
Object ep = list.get(0).get("ELECTRONIC_PHOTO");
if (ep != null) {
try {
inArr = (byte[]) ep;
} catch (Exception e) {
e.printStackTrace();
}
} else {
result = realNm;
}
}
return inArr;
}
public void setSeal(Document doc, String processInstanceId) throws Exception {
// 设计人信息
String sjrDataSql = "SELECT T.ASSIGNEE,SU.REAL_NM,SU.MOBILE,T.CREATE_TIME FROM FOXBPM_RUN_TASK T LEFT JOIN SYS_USER SU ON SU.USER_ID = T.ASSIGNEE WHERE T.PROCESSINSTANCE_ID = ? AND (T.NAME LIKE '%编写%' OR T.NAME LIKE '%修改%') ORDER BY T.CREATE_TIME ";
List<Map<String, Object>> sjrData = jdbcTemplate.queryForList(
sjrDataSql, processInstanceId);
String userId = null;
if (sjrData.size() > 0) {
for (int i = 0; i < sjrData.size(); i++) {
userId = ObjectUtils.toString(sjrData.get(i).get(
"ASSIGNEE"));
}
}
DocumentBuilder builder = new DocumentBuilder(doc);
List<Shape> shapeList = Arrays.stream(builder.getDocument().getChildNodes(NodeType.SHAPE, true).toArray())
.filter(Shape.class::isInstance)
.map(Shape.class::cast)
.collect(Collectors.toList());
for (Shape shape : shapeList) {
if (shape.getShapeType() == ShapeType.IMAGE) {
builder.moveTo(shape);
// 获取图片的名称
String sourceFullName = shape.getImageData().getTitle();
// 获取图片的后缀名, 存储时可能会用到
String imageSuffix = FileFormatUtil.imageTypeToExtension(shape.getImageData().getImageType());
// 移走图片
if ("章1.png".equals(sourceFullName)) {
shape.remove();
}
}
}
Paragraph paragraph = (Paragraph) doc.getChild(NodeType.PARAGRAPH, 28, true);
if (getSealImage(userId) != null) {
Shape shape = builder.insertImage(getSealImage(userId), 120, 120);//需要加盖的印章图片
paragraph.appendChild(shape);
shape.setWrapType(WrapType.NONE);
shape.setBehindText(false);//设置图片悬浮于文字之上
shape.setRelativeHorizontalPosition(RelativeHorizontalPosition.MARGIN);
shape.setHorizontalAlignment(HorizontalAlignment.CENTER);
}
}
word功能代码
于 2022-03-08 17:39:47 首次发布