diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/Example.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/Example.java index 55183e7..c548c20 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/Example.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/Example.java @@ -1,8 +1,13 @@ package com.casic.missiles.service.listeners.register; import com.casic.missiles.dto.certificate.ElectronicImage; +import com.casic.missiles.dto.certificate.FilePrintRegister; import com.spire.doc.Document; import com.spire.doc.FileFormat; +import com.spire.doc.Section; +import com.spire.doc.documents.TextSelection; +import com.spire.doc.fields.DocPicture; +import com.spire.doc.fields.TextRange; import java.util.ArrayList; import java.util.HashMap; @@ -61,7 +66,7 @@ params.put("degree", "博士"); params.put("test", "\uF052"); params.put("error", "\uF0A3"); - String newOldUrl = FilePrintRegisterUtils.exportWord(wordOldUrl, localPathUrl, "temp.docx", params,null); + String newOldUrl = FilePrintRegisterUtils.exportWord(wordOldUrl, localPathUrl, "temp.docx", params, null); System.out.println(newOldUrl); } @@ -101,10 +106,58 @@ params.put("customerAdvice", "我认为该客户无价"); params.put("test", "\uF052"); params.put("error", "\uF0A3"); - String newOldUrl = FilePrintRegisterUtils.exportWord(wordOldUrl, localPathUrl, "temp.docx", params,null); + String newOldUrl = FilePrintRegisterUtils.exportWord(wordOldUrl, localPathUrl, "temp.docx", params, null); System.out.println(newOldUrl); } + public static void main(String[] args) throws Exception { + //内嵌表信息 + Example.absolutePathStampImage(); + } + /** + * 表格相对位置信息 + */ + protected static void absolutePathStampImage() { + String localPathUrl = "D:\\casic\\cut\\"; + // 目标文件地址 + String wordOldUrl = localPathUrl + "202.docx"; + // 目标文件地址 + String wordNewUrl = localPathUrl + "202new.docx"; + String pngUrl = localPathUrl + "202.png"; + ElectronicImage electronicImage = defaultElectronicSignName("技术负责人(签名):"); + electronicImage.setElectronicSealImageUrl(pngUrl); + ElectronicImage electronicImage2 = defaultElectronicSignName("计量测试站主任(签名):"); + electronicImage2.setElectronicSealImageUrl(pngUrl); + List electronicImageList = new ArrayList<>(); + electronicImageList.add(electronicImage); + electronicImageList.add(electronicImage2); + FilePrintRegisterUtils.addSameKeyWordStamp(wordOldUrl, wordNewUrl, electronicImageList); + } + + public static void addSameKeyWordStamp(String wordOldUrl, String wordNewUrl, List electronicImageList) { + // 加载文档 + Document document = new Document(); + document.loadFromFile(wordOldUrl); + for(ElectronicImage electronicImage:electronicImageList){ + //查找文档中的指定文本内容 + TextSelection[] selections = document.findAllString(electronicImage.getKeyWord(), true, true); + int index = 0; + TextRange range = null; + //遍历文档,移除文本内容,插入图片 + for (TextSelection textSelection : selections) { + DocPicture pic = new DocPicture(document); + pic.loadImage(electronicImage.getElectronicSealImageUrl()); + pic.setHeight(30f); + pic.setWidth(40f); + range = textSelection.getAsOneRange(); + index = range.getOwnerParagraph().getChildObjects().indexOf(range); + range.getOwnerParagraph().getChildObjects().insert(index, pic); + range.getOwnerParagraph().getChildObjects().remove(range); + } + } + document.saveToFile(wordNewUrl); + } + protected static ElectronicImage defaultElectronicSignSeal(String keyWord) { ElectronicImage electronicImage = ElectronicImage.builder() .keyWordIndex(-1) @@ -123,8 +176,8 @@ ElectronicImage electronicImage = ElectronicImage.builder() .keyWordIndex(-1) .keyWord(keyWord) - .vertical(0f) - .horizontal(70f) + .vertical(-0f) + .horizontal(20f) .stampHeight(30f) .stampWidth(40f) .diaphaneity(0f) diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/Example.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/Example.java index 55183e7..c548c20 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/Example.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/Example.java @@ -1,8 +1,13 @@ package com.casic.missiles.service.listeners.register; import com.casic.missiles.dto.certificate.ElectronicImage; +import com.casic.missiles.dto.certificate.FilePrintRegister; import com.spire.doc.Document; import com.spire.doc.FileFormat; +import com.spire.doc.Section; +import com.spire.doc.documents.TextSelection; +import com.spire.doc.fields.DocPicture; +import com.spire.doc.fields.TextRange; import java.util.ArrayList; import java.util.HashMap; @@ -61,7 +66,7 @@ params.put("degree", "博士"); params.put("test", "\uF052"); params.put("error", "\uF0A3"); - String newOldUrl = FilePrintRegisterUtils.exportWord(wordOldUrl, localPathUrl, "temp.docx", params,null); + String newOldUrl = FilePrintRegisterUtils.exportWord(wordOldUrl, localPathUrl, "temp.docx", params, null); System.out.println(newOldUrl); } @@ -101,10 +106,58 @@ params.put("customerAdvice", "我认为该客户无价"); params.put("test", "\uF052"); params.put("error", "\uF0A3"); - String newOldUrl = FilePrintRegisterUtils.exportWord(wordOldUrl, localPathUrl, "temp.docx", params,null); + String newOldUrl = FilePrintRegisterUtils.exportWord(wordOldUrl, localPathUrl, "temp.docx", params, null); System.out.println(newOldUrl); } + public static void main(String[] args) throws Exception { + //内嵌表信息 + Example.absolutePathStampImage(); + } + /** + * 表格相对位置信息 + */ + protected static void absolutePathStampImage() { + String localPathUrl = "D:\\casic\\cut\\"; + // 目标文件地址 + String wordOldUrl = localPathUrl + "202.docx"; + // 目标文件地址 + String wordNewUrl = localPathUrl + "202new.docx"; + String pngUrl = localPathUrl + "202.png"; + ElectronicImage electronicImage = defaultElectronicSignName("技术负责人(签名):"); + electronicImage.setElectronicSealImageUrl(pngUrl); + ElectronicImage electronicImage2 = defaultElectronicSignName("计量测试站主任(签名):"); + electronicImage2.setElectronicSealImageUrl(pngUrl); + List electronicImageList = new ArrayList<>(); + electronicImageList.add(electronicImage); + electronicImageList.add(electronicImage2); + FilePrintRegisterUtils.addSameKeyWordStamp(wordOldUrl, wordNewUrl, electronicImageList); + } + + public static void addSameKeyWordStamp(String wordOldUrl, String wordNewUrl, List electronicImageList) { + // 加载文档 + Document document = new Document(); + document.loadFromFile(wordOldUrl); + for(ElectronicImage electronicImage:electronicImageList){ + //查找文档中的指定文本内容 + TextSelection[] selections = document.findAllString(electronicImage.getKeyWord(), true, true); + int index = 0; + TextRange range = null; + //遍历文档,移除文本内容,插入图片 + for (TextSelection textSelection : selections) { + DocPicture pic = new DocPicture(document); + pic.loadImage(electronicImage.getElectronicSealImageUrl()); + pic.setHeight(30f); + pic.setWidth(40f); + range = textSelection.getAsOneRange(); + index = range.getOwnerParagraph().getChildObjects().indexOf(range); + range.getOwnerParagraph().getChildObjects().insert(index, pic); + range.getOwnerParagraph().getChildObjects().remove(range); + } + } + document.saveToFile(wordNewUrl); + } + protected static ElectronicImage defaultElectronicSignSeal(String keyWord) { ElectronicImage electronicImage = ElectronicImage.builder() .keyWordIndex(-1) @@ -123,8 +176,8 @@ ElectronicImage electronicImage = ElectronicImage.builder() .keyWordIndex(-1) .keyWord(keyWord) - .vertical(0f) - .horizontal(70f) + .vertical(-0f) + .horizontal(20f) .stampHeight(30f) .stampWidth(40f) .diaphaneity(0f) diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FilePrintRegisterUtils.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FilePrintRegisterUtils.java index 934b992..f46ebe4 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FilePrintRegisterUtils.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FilePrintRegisterUtils.java @@ -11,6 +11,7 @@ import com.spire.doc.documents.*; import com.spire.doc.fields.DocPicture; import com.spire.doc.fields.TextRange; +import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.apache.poi.xwpf.usermodel.XWPFDocument; @@ -28,6 +29,7 @@ * @Version:1.0 */ +@Slf4j public class FilePrintRegisterUtils { /** @@ -101,7 +103,7 @@ * @param wordNewUrl 新word文件路径 * @param electronicSealList 电子印章信息 */ - private static ElectronicImage addSameKeyWordStamp(String wordOldUrl, String + public static ElectronicImage addSameKeyWordStamp(String wordOldUrl, String wordNewUrl, List electronicSealList) throws RuntimeException { if (CollectionUtils.isEmpty(electronicSealList)) { return null; @@ -110,26 +112,31 @@ // 加载文档 Document document = new Document(); document.loadFromFile(wordOldUrl); + for (ElectronicImage electronicSeal : electronicSealList) { //获取关键字位置 TextSelection[] textSelections = document.findAllString(electronicSeal.getKeyWord(), false, false); //加签章照片 if (ObjectUtils.isEmpty(textSelections) || StringUtils.isEmpty(electronicSeal.getElectronicSealImageUrl())) { - throw new RuntimeException("image url is empty or key word not exist in the word template ..."); + log.warn("image url is empty or key word not exist in the word template ..."); + continue; } //多处关键字添加同一个签章 for (int keyWordIndex = 0; keyWordIndex < textSelections.length; keyWordIndex++) { Paragraph paragraph = textSelections[keyWordIndex].getAsOneRange().getOwnerParagraph(); //添加公司印章 DocPicture docPicture = paragraph.appendPicture(electronicSeal.getElectronicSealImageUrl()); - //设置图片位于文字顶层 - docPicture.setTextWrappingStyle(TextWrappingStyle.In_Front_Of_Text); //表、行、列索引是必填的,兼容之前的代码,之前的代码不用配置 ImageConfig imageConfig = electronicSeal.getImageConfig(); - if (ObjectUtils.isNotEmpty(imageConfig.getTableIndex()) && - ObjectUtils.isNotEmpty(imageConfig.getRowIndex()) && ObjectUtils.isNotEmpty(imageConfig.getColIndex())) { - Section section = textSelections[keyWordIndex].getAsOneRange().getDocument().getLastSection(); + //设置图片位于文字顶层 + docPicture.setTextWrappingStyle(TextWrappingStyle.In_Front_Of_Text); + if (ObjectUtils.isNotEmpty(imageConfig) && + (ObjectUtils.isNotEmpty(imageConfig.getTableIndex()) && imageConfig.getTableIndex() != -1) && + (ObjectUtils.isNotEmpty(imageConfig.getRowIndex()) && imageConfig.getRowIndex() != -1) && + (ObjectUtils.isNotEmpty(imageConfig.getColIndex()) && imageConfig.getColIndex() != -1)) { + paragraph.appendPicture(electronicSeal.getElectronicSealImageUrl()); //指定电子章位置 + Section section = textSelections[keyWordIndex].getAsOneRange().getDocument().getLastSection(); //水平位置 docPicture.setHorizontalAlignment(ShapeHorizontalAlignment.Center); //垂直位置 @@ -147,10 +154,10 @@ docPicture.setWidth(docPicture.getWidth() * imageConfig.getColSpan()); } } else { + //印章和电子签章 + docPicture.setHorizontalPosition(electronicSeal.getKeyWord().length() * 10); docPicture.setWidth(electronicSeal.getStampWidth()); docPicture.setHeight(electronicSeal.getStampHeight()); - docPicture.setHorizontalPosition(electronicSeal.getHorizontal()); - docPicture.setVerticalPosition(electronicSeal.getVertical()); } //带有公章的关键字且页数大于2,需要设置骑缝章 if (INSIGNIA_KEYWORD.equals(electronicSeal.getKeyWord()) && document.getPageCount() >= 2) { @@ -402,9 +409,4 @@ return tmpPath; } - public static void main(String[] args) throws Exception { - //内嵌表信息 - Example.populateTableNest(); - } - } \ No newline at end of file diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/Example.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/Example.java index 55183e7..c548c20 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/Example.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/Example.java @@ -1,8 +1,13 @@ package com.casic.missiles.service.listeners.register; import com.casic.missiles.dto.certificate.ElectronicImage; +import com.casic.missiles.dto.certificate.FilePrintRegister; import com.spire.doc.Document; import com.spire.doc.FileFormat; +import com.spire.doc.Section; +import com.spire.doc.documents.TextSelection; +import com.spire.doc.fields.DocPicture; +import com.spire.doc.fields.TextRange; import java.util.ArrayList; import java.util.HashMap; @@ -61,7 +66,7 @@ params.put("degree", "博士"); params.put("test", "\uF052"); params.put("error", "\uF0A3"); - String newOldUrl = FilePrintRegisterUtils.exportWord(wordOldUrl, localPathUrl, "temp.docx", params,null); + String newOldUrl = FilePrintRegisterUtils.exportWord(wordOldUrl, localPathUrl, "temp.docx", params, null); System.out.println(newOldUrl); } @@ -101,10 +106,58 @@ params.put("customerAdvice", "我认为该客户无价"); params.put("test", "\uF052"); params.put("error", "\uF0A3"); - String newOldUrl = FilePrintRegisterUtils.exportWord(wordOldUrl, localPathUrl, "temp.docx", params,null); + String newOldUrl = FilePrintRegisterUtils.exportWord(wordOldUrl, localPathUrl, "temp.docx", params, null); System.out.println(newOldUrl); } + public static void main(String[] args) throws Exception { + //内嵌表信息 + Example.absolutePathStampImage(); + } + /** + * 表格相对位置信息 + */ + protected static void absolutePathStampImage() { + String localPathUrl = "D:\\casic\\cut\\"; + // 目标文件地址 + String wordOldUrl = localPathUrl + "202.docx"; + // 目标文件地址 + String wordNewUrl = localPathUrl + "202new.docx"; + String pngUrl = localPathUrl + "202.png"; + ElectronicImage electronicImage = defaultElectronicSignName("技术负责人(签名):"); + electronicImage.setElectronicSealImageUrl(pngUrl); + ElectronicImage electronicImage2 = defaultElectronicSignName("计量测试站主任(签名):"); + electronicImage2.setElectronicSealImageUrl(pngUrl); + List electronicImageList = new ArrayList<>(); + electronicImageList.add(electronicImage); + electronicImageList.add(electronicImage2); + FilePrintRegisterUtils.addSameKeyWordStamp(wordOldUrl, wordNewUrl, electronicImageList); + } + + public static void addSameKeyWordStamp(String wordOldUrl, String wordNewUrl, List electronicImageList) { + // 加载文档 + Document document = new Document(); + document.loadFromFile(wordOldUrl); + for(ElectronicImage electronicImage:electronicImageList){ + //查找文档中的指定文本内容 + TextSelection[] selections = document.findAllString(electronicImage.getKeyWord(), true, true); + int index = 0; + TextRange range = null; + //遍历文档,移除文本内容,插入图片 + for (TextSelection textSelection : selections) { + DocPicture pic = new DocPicture(document); + pic.loadImage(electronicImage.getElectronicSealImageUrl()); + pic.setHeight(30f); + pic.setWidth(40f); + range = textSelection.getAsOneRange(); + index = range.getOwnerParagraph().getChildObjects().indexOf(range); + range.getOwnerParagraph().getChildObjects().insert(index, pic); + range.getOwnerParagraph().getChildObjects().remove(range); + } + } + document.saveToFile(wordNewUrl); + } + protected static ElectronicImage defaultElectronicSignSeal(String keyWord) { ElectronicImage electronicImage = ElectronicImage.builder() .keyWordIndex(-1) @@ -123,8 +176,8 @@ ElectronicImage electronicImage = ElectronicImage.builder() .keyWordIndex(-1) .keyWord(keyWord) - .vertical(0f) - .horizontal(70f) + .vertical(-0f) + .horizontal(20f) .stampHeight(30f) .stampWidth(40f) .diaphaneity(0f) diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FilePrintRegisterUtils.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FilePrintRegisterUtils.java index 934b992..f46ebe4 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FilePrintRegisterUtils.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FilePrintRegisterUtils.java @@ -11,6 +11,7 @@ import com.spire.doc.documents.*; import com.spire.doc.fields.DocPicture; import com.spire.doc.fields.TextRange; +import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.apache.poi.xwpf.usermodel.XWPFDocument; @@ -28,6 +29,7 @@ * @Version:1.0 */ +@Slf4j public class FilePrintRegisterUtils { /** @@ -101,7 +103,7 @@ * @param wordNewUrl 新word文件路径 * @param electronicSealList 电子印章信息 */ - private static ElectronicImage addSameKeyWordStamp(String wordOldUrl, String + public static ElectronicImage addSameKeyWordStamp(String wordOldUrl, String wordNewUrl, List electronicSealList) throws RuntimeException { if (CollectionUtils.isEmpty(electronicSealList)) { return null; @@ -110,26 +112,31 @@ // 加载文档 Document document = new Document(); document.loadFromFile(wordOldUrl); + for (ElectronicImage electronicSeal : electronicSealList) { //获取关键字位置 TextSelection[] textSelections = document.findAllString(electronicSeal.getKeyWord(), false, false); //加签章照片 if (ObjectUtils.isEmpty(textSelections) || StringUtils.isEmpty(electronicSeal.getElectronicSealImageUrl())) { - throw new RuntimeException("image url is empty or key word not exist in the word template ..."); + log.warn("image url is empty or key word not exist in the word template ..."); + continue; } //多处关键字添加同一个签章 for (int keyWordIndex = 0; keyWordIndex < textSelections.length; keyWordIndex++) { Paragraph paragraph = textSelections[keyWordIndex].getAsOneRange().getOwnerParagraph(); //添加公司印章 DocPicture docPicture = paragraph.appendPicture(electronicSeal.getElectronicSealImageUrl()); - //设置图片位于文字顶层 - docPicture.setTextWrappingStyle(TextWrappingStyle.In_Front_Of_Text); //表、行、列索引是必填的,兼容之前的代码,之前的代码不用配置 ImageConfig imageConfig = electronicSeal.getImageConfig(); - if (ObjectUtils.isNotEmpty(imageConfig.getTableIndex()) && - ObjectUtils.isNotEmpty(imageConfig.getRowIndex()) && ObjectUtils.isNotEmpty(imageConfig.getColIndex())) { - Section section = textSelections[keyWordIndex].getAsOneRange().getDocument().getLastSection(); + //设置图片位于文字顶层 + docPicture.setTextWrappingStyle(TextWrappingStyle.In_Front_Of_Text); + if (ObjectUtils.isNotEmpty(imageConfig) && + (ObjectUtils.isNotEmpty(imageConfig.getTableIndex()) && imageConfig.getTableIndex() != -1) && + (ObjectUtils.isNotEmpty(imageConfig.getRowIndex()) && imageConfig.getRowIndex() != -1) && + (ObjectUtils.isNotEmpty(imageConfig.getColIndex()) && imageConfig.getColIndex() != -1)) { + paragraph.appendPicture(electronicSeal.getElectronicSealImageUrl()); //指定电子章位置 + Section section = textSelections[keyWordIndex].getAsOneRange().getDocument().getLastSection(); //水平位置 docPicture.setHorizontalAlignment(ShapeHorizontalAlignment.Center); //垂直位置 @@ -147,10 +154,10 @@ docPicture.setWidth(docPicture.getWidth() * imageConfig.getColSpan()); } } else { + //印章和电子签章 + docPicture.setHorizontalPosition(electronicSeal.getKeyWord().length() * 10); docPicture.setWidth(electronicSeal.getStampWidth()); docPicture.setHeight(electronicSeal.getStampHeight()); - docPicture.setHorizontalPosition(electronicSeal.getHorizontal()); - docPicture.setVerticalPosition(electronicSeal.getVertical()); } //带有公章的关键字且页数大于2,需要设置骑缝章 if (INSIGNIA_KEYWORD.equals(electronicSeal.getKeyWord()) && document.getPageCount() >= 2) { @@ -402,9 +409,4 @@ return tmpPath; } - public static void main(String[] args) throws Exception { - //内嵌表信息 - Example.populateTableNest(); - } - } \ No newline at end of file diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/ElectronicSignSeal.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/ElectronicSignSeal.java index cb30b11..05486fd 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/ElectronicSignSeal.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/ElectronicSignSeal.java @@ -147,7 +147,7 @@ public static void bindPictureKey(FilePrintRegister filePrintRegister, List imageConfigList, Map metaDataMap) { //处理文中的章 List extendImageList = imageConfigList.stream() - .filter(imageMap -> "0".equals(imageMap.getApprovalFlag())) + .filter(imageMap -> StringUtils.isEmpty(imageMap.getApprovalFlag()) || "0".equals(imageMap.getApprovalFlag())) .collect(Collectors.toList()); filePrintRegister.getElectronicImageList().addAll(ElectronicSignSeal.electronicKeySignSeals(extendImageList, metaDataMap, filePrintRegister)); } @@ -180,12 +180,13 @@ Calendar calendar = Calendar.getInstance(); calendar.setTime(approvalLog.getFinishTime()); filePrintRegister.getParams().put("year" + timeSeqCount, calendar.get(Calendar.YEAR)); - filePrintRegister.getParams().put("month" + timeSeqCount, calendar.get(Calendar.MONTH)); - filePrintRegister.getParams().put("day" + timeSeqCount, calendar.get(Calendar.DAY_OF_YEAR)); + filePrintRegister.getParams().put("month" + timeSeqCount, calendar.get(Calendar.MONTH)+1); + filePrintRegister.getParams().put("day" + timeSeqCount, calendar.get(Calendar.DAY_OF_MONTH)); //工作流新增理由 filePrintRegister.getParams().put("comment" + timeSeqCount++, approvalLog.getComment()); //设置集合 electronicImage.setElectronicSealImageUrl(filePrintRegister.getTemDir() + signFileName); + electronicImage.setImageConfig(approvalImageList.get(i)); //放入待下载的文件集合 filePrintRegister.getBeDownloadedFileNames().add(signFileName); electronicImageList.add(electronicImage); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/Example.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/Example.java index 55183e7..c548c20 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/Example.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/Example.java @@ -1,8 +1,13 @@ package com.casic.missiles.service.listeners.register; import com.casic.missiles.dto.certificate.ElectronicImage; +import com.casic.missiles.dto.certificate.FilePrintRegister; import com.spire.doc.Document; import com.spire.doc.FileFormat; +import com.spire.doc.Section; +import com.spire.doc.documents.TextSelection; +import com.spire.doc.fields.DocPicture; +import com.spire.doc.fields.TextRange; import java.util.ArrayList; import java.util.HashMap; @@ -61,7 +66,7 @@ params.put("degree", "博士"); params.put("test", "\uF052"); params.put("error", "\uF0A3"); - String newOldUrl = FilePrintRegisterUtils.exportWord(wordOldUrl, localPathUrl, "temp.docx", params,null); + String newOldUrl = FilePrintRegisterUtils.exportWord(wordOldUrl, localPathUrl, "temp.docx", params, null); System.out.println(newOldUrl); } @@ -101,10 +106,58 @@ params.put("customerAdvice", "我认为该客户无价"); params.put("test", "\uF052"); params.put("error", "\uF0A3"); - String newOldUrl = FilePrintRegisterUtils.exportWord(wordOldUrl, localPathUrl, "temp.docx", params,null); + String newOldUrl = FilePrintRegisterUtils.exportWord(wordOldUrl, localPathUrl, "temp.docx", params, null); System.out.println(newOldUrl); } + public static void main(String[] args) throws Exception { + //内嵌表信息 + Example.absolutePathStampImage(); + } + /** + * 表格相对位置信息 + */ + protected static void absolutePathStampImage() { + String localPathUrl = "D:\\casic\\cut\\"; + // 目标文件地址 + String wordOldUrl = localPathUrl + "202.docx"; + // 目标文件地址 + String wordNewUrl = localPathUrl + "202new.docx"; + String pngUrl = localPathUrl + "202.png"; + ElectronicImage electronicImage = defaultElectronicSignName("技术负责人(签名):"); + electronicImage.setElectronicSealImageUrl(pngUrl); + ElectronicImage electronicImage2 = defaultElectronicSignName("计量测试站主任(签名):"); + electronicImage2.setElectronicSealImageUrl(pngUrl); + List electronicImageList = new ArrayList<>(); + electronicImageList.add(electronicImage); + electronicImageList.add(electronicImage2); + FilePrintRegisterUtils.addSameKeyWordStamp(wordOldUrl, wordNewUrl, electronicImageList); + } + + public static void addSameKeyWordStamp(String wordOldUrl, String wordNewUrl, List electronicImageList) { + // 加载文档 + Document document = new Document(); + document.loadFromFile(wordOldUrl); + for(ElectronicImage electronicImage:electronicImageList){ + //查找文档中的指定文本内容 + TextSelection[] selections = document.findAllString(electronicImage.getKeyWord(), true, true); + int index = 0; + TextRange range = null; + //遍历文档,移除文本内容,插入图片 + for (TextSelection textSelection : selections) { + DocPicture pic = new DocPicture(document); + pic.loadImage(electronicImage.getElectronicSealImageUrl()); + pic.setHeight(30f); + pic.setWidth(40f); + range = textSelection.getAsOneRange(); + index = range.getOwnerParagraph().getChildObjects().indexOf(range); + range.getOwnerParagraph().getChildObjects().insert(index, pic); + range.getOwnerParagraph().getChildObjects().remove(range); + } + } + document.saveToFile(wordNewUrl); + } + protected static ElectronicImage defaultElectronicSignSeal(String keyWord) { ElectronicImage electronicImage = ElectronicImage.builder() .keyWordIndex(-1) @@ -123,8 +176,8 @@ ElectronicImage electronicImage = ElectronicImage.builder() .keyWordIndex(-1) .keyWord(keyWord) - .vertical(0f) - .horizontal(70f) + .vertical(-0f) + .horizontal(20f) .stampHeight(30f) .stampWidth(40f) .diaphaneity(0f) diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FilePrintRegisterUtils.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FilePrintRegisterUtils.java index 934b992..f46ebe4 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FilePrintRegisterUtils.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FilePrintRegisterUtils.java @@ -11,6 +11,7 @@ import com.spire.doc.documents.*; import com.spire.doc.fields.DocPicture; import com.spire.doc.fields.TextRange; +import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.apache.poi.xwpf.usermodel.XWPFDocument; @@ -28,6 +29,7 @@ * @Version:1.0 */ +@Slf4j public class FilePrintRegisterUtils { /** @@ -101,7 +103,7 @@ * @param wordNewUrl 新word文件路径 * @param electronicSealList 电子印章信息 */ - private static ElectronicImage addSameKeyWordStamp(String wordOldUrl, String + public static ElectronicImage addSameKeyWordStamp(String wordOldUrl, String wordNewUrl, List electronicSealList) throws RuntimeException { if (CollectionUtils.isEmpty(electronicSealList)) { return null; @@ -110,26 +112,31 @@ // 加载文档 Document document = new Document(); document.loadFromFile(wordOldUrl); + for (ElectronicImage electronicSeal : electronicSealList) { //获取关键字位置 TextSelection[] textSelections = document.findAllString(electronicSeal.getKeyWord(), false, false); //加签章照片 if (ObjectUtils.isEmpty(textSelections) || StringUtils.isEmpty(electronicSeal.getElectronicSealImageUrl())) { - throw new RuntimeException("image url is empty or key word not exist in the word template ..."); + log.warn("image url is empty or key word not exist in the word template ..."); + continue; } //多处关键字添加同一个签章 for (int keyWordIndex = 0; keyWordIndex < textSelections.length; keyWordIndex++) { Paragraph paragraph = textSelections[keyWordIndex].getAsOneRange().getOwnerParagraph(); //添加公司印章 DocPicture docPicture = paragraph.appendPicture(electronicSeal.getElectronicSealImageUrl()); - //设置图片位于文字顶层 - docPicture.setTextWrappingStyle(TextWrappingStyle.In_Front_Of_Text); //表、行、列索引是必填的,兼容之前的代码,之前的代码不用配置 ImageConfig imageConfig = electronicSeal.getImageConfig(); - if (ObjectUtils.isNotEmpty(imageConfig.getTableIndex()) && - ObjectUtils.isNotEmpty(imageConfig.getRowIndex()) && ObjectUtils.isNotEmpty(imageConfig.getColIndex())) { - Section section = textSelections[keyWordIndex].getAsOneRange().getDocument().getLastSection(); + //设置图片位于文字顶层 + docPicture.setTextWrappingStyle(TextWrappingStyle.In_Front_Of_Text); + if (ObjectUtils.isNotEmpty(imageConfig) && + (ObjectUtils.isNotEmpty(imageConfig.getTableIndex()) && imageConfig.getTableIndex() != -1) && + (ObjectUtils.isNotEmpty(imageConfig.getRowIndex()) && imageConfig.getRowIndex() != -1) && + (ObjectUtils.isNotEmpty(imageConfig.getColIndex()) && imageConfig.getColIndex() != -1)) { + paragraph.appendPicture(electronicSeal.getElectronicSealImageUrl()); //指定电子章位置 + Section section = textSelections[keyWordIndex].getAsOneRange().getDocument().getLastSection(); //水平位置 docPicture.setHorizontalAlignment(ShapeHorizontalAlignment.Center); //垂直位置 @@ -147,10 +154,10 @@ docPicture.setWidth(docPicture.getWidth() * imageConfig.getColSpan()); } } else { + //印章和电子签章 + docPicture.setHorizontalPosition(electronicSeal.getKeyWord().length() * 10); docPicture.setWidth(electronicSeal.getStampWidth()); docPicture.setHeight(electronicSeal.getStampHeight()); - docPicture.setHorizontalPosition(electronicSeal.getHorizontal()); - docPicture.setVerticalPosition(electronicSeal.getVertical()); } //带有公章的关键字且页数大于2,需要设置骑缝章 if (INSIGNIA_KEYWORD.equals(electronicSeal.getKeyWord()) && document.getPageCount() >= 2) { @@ -402,9 +409,4 @@ return tmpPath; } - public static void main(String[] args) throws Exception { - //内嵌表信息 - Example.populateTableNest(); - } - } \ No newline at end of file diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/ElectronicSignSeal.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/ElectronicSignSeal.java index cb30b11..05486fd 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/ElectronicSignSeal.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/ElectronicSignSeal.java @@ -147,7 +147,7 @@ public static void bindPictureKey(FilePrintRegister filePrintRegister, List imageConfigList, Map metaDataMap) { //处理文中的章 List extendImageList = imageConfigList.stream() - .filter(imageMap -> "0".equals(imageMap.getApprovalFlag())) + .filter(imageMap -> StringUtils.isEmpty(imageMap.getApprovalFlag()) || "0".equals(imageMap.getApprovalFlag())) .collect(Collectors.toList()); filePrintRegister.getElectronicImageList().addAll(ElectronicSignSeal.electronicKeySignSeals(extendImageList, metaDataMap, filePrintRegister)); } @@ -180,12 +180,13 @@ Calendar calendar = Calendar.getInstance(); calendar.setTime(approvalLog.getFinishTime()); filePrintRegister.getParams().put("year" + timeSeqCount, calendar.get(Calendar.YEAR)); - filePrintRegister.getParams().put("month" + timeSeqCount, calendar.get(Calendar.MONTH)); - filePrintRegister.getParams().put("day" + timeSeqCount, calendar.get(Calendar.DAY_OF_YEAR)); + filePrintRegister.getParams().put("month" + timeSeqCount, calendar.get(Calendar.MONTH)+1); + filePrintRegister.getParams().put("day" + timeSeqCount, calendar.get(Calendar.DAY_OF_MONTH)); //工作流新增理由 filePrintRegister.getParams().put("comment" + timeSeqCount++, approvalLog.getComment()); //设置集合 electronicImage.setElectronicSealImageUrl(filePrintRegister.getTemDir() + signFileName); + electronicImage.setImageConfig(approvalImageList.get(i)); //放入待下载的文件集合 filePrintRegister.getBeDownloadedFileNames().add(signFileName); electronicImageList.add(electronicImage); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/ElectronicSignTemplate.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/ElectronicSignTemplate.java index 84d294d..202e245 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/ElectronicSignTemplate.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/ElectronicSignTemplate.java @@ -30,6 +30,8 @@ } + + /** * 默认电子签章的图片设置,允许重写 */ @@ -65,15 +67,28 @@ /** * 默认电子签名的图片设置,支持重写 */ +// protected static ElectronicImage defaultElectronicSignName(String keyWord) { +// ElectronicImage electronicImage = ElectronicImage.builder() +// .keyWordIndex(-1) +// .keyWord(keyWord) +// .vertical(-10f) +// .horizontal(60f) +// .stampHeight(40f) +// .stampWidth(60f) +// .diaphaneity(150f) +// .build(); +// return electronicImage; +// } + //签名大小位置 protected static ElectronicImage defaultElectronicSignName(String keyWord) { ElectronicImage electronicImage = ElectronicImage.builder() .keyWordIndex(-1) .keyWord(keyWord) .vertical(-10f) - .horizontal(60f) - .stampHeight(40f) - .stampWidth(60f) - .diaphaneity(150f) + .horizontal(0f) + .stampHeight(30f) + .stampWidth(40f) + .diaphaneity(0f) .build(); return electronicImage; } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/Example.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/Example.java index 55183e7..c548c20 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/Example.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/Example.java @@ -1,8 +1,13 @@ package com.casic.missiles.service.listeners.register; import com.casic.missiles.dto.certificate.ElectronicImage; +import com.casic.missiles.dto.certificate.FilePrintRegister; import com.spire.doc.Document; import com.spire.doc.FileFormat; +import com.spire.doc.Section; +import com.spire.doc.documents.TextSelection; +import com.spire.doc.fields.DocPicture; +import com.spire.doc.fields.TextRange; import java.util.ArrayList; import java.util.HashMap; @@ -61,7 +66,7 @@ params.put("degree", "博士"); params.put("test", "\uF052"); params.put("error", "\uF0A3"); - String newOldUrl = FilePrintRegisterUtils.exportWord(wordOldUrl, localPathUrl, "temp.docx", params,null); + String newOldUrl = FilePrintRegisterUtils.exportWord(wordOldUrl, localPathUrl, "temp.docx", params, null); System.out.println(newOldUrl); } @@ -101,10 +106,58 @@ params.put("customerAdvice", "我认为该客户无价"); params.put("test", "\uF052"); params.put("error", "\uF0A3"); - String newOldUrl = FilePrintRegisterUtils.exportWord(wordOldUrl, localPathUrl, "temp.docx", params,null); + String newOldUrl = FilePrintRegisterUtils.exportWord(wordOldUrl, localPathUrl, "temp.docx", params, null); System.out.println(newOldUrl); } + public static void main(String[] args) throws Exception { + //内嵌表信息 + Example.absolutePathStampImage(); + } + /** + * 表格相对位置信息 + */ + protected static void absolutePathStampImage() { + String localPathUrl = "D:\\casic\\cut\\"; + // 目标文件地址 + String wordOldUrl = localPathUrl + "202.docx"; + // 目标文件地址 + String wordNewUrl = localPathUrl + "202new.docx"; + String pngUrl = localPathUrl + "202.png"; + ElectronicImage electronicImage = defaultElectronicSignName("技术负责人(签名):"); + electronicImage.setElectronicSealImageUrl(pngUrl); + ElectronicImage electronicImage2 = defaultElectronicSignName("计量测试站主任(签名):"); + electronicImage2.setElectronicSealImageUrl(pngUrl); + List electronicImageList = new ArrayList<>(); + electronicImageList.add(electronicImage); + electronicImageList.add(electronicImage2); + FilePrintRegisterUtils.addSameKeyWordStamp(wordOldUrl, wordNewUrl, electronicImageList); + } + + public static void addSameKeyWordStamp(String wordOldUrl, String wordNewUrl, List electronicImageList) { + // 加载文档 + Document document = new Document(); + document.loadFromFile(wordOldUrl); + for(ElectronicImage electronicImage:electronicImageList){ + //查找文档中的指定文本内容 + TextSelection[] selections = document.findAllString(electronicImage.getKeyWord(), true, true); + int index = 0; + TextRange range = null; + //遍历文档,移除文本内容,插入图片 + for (TextSelection textSelection : selections) { + DocPicture pic = new DocPicture(document); + pic.loadImage(electronicImage.getElectronicSealImageUrl()); + pic.setHeight(30f); + pic.setWidth(40f); + range = textSelection.getAsOneRange(); + index = range.getOwnerParagraph().getChildObjects().indexOf(range); + range.getOwnerParagraph().getChildObjects().insert(index, pic); + range.getOwnerParagraph().getChildObjects().remove(range); + } + } + document.saveToFile(wordNewUrl); + } + protected static ElectronicImage defaultElectronicSignSeal(String keyWord) { ElectronicImage electronicImage = ElectronicImage.builder() .keyWordIndex(-1) @@ -123,8 +176,8 @@ ElectronicImage electronicImage = ElectronicImage.builder() .keyWordIndex(-1) .keyWord(keyWord) - .vertical(0f) - .horizontal(70f) + .vertical(-0f) + .horizontal(20f) .stampHeight(30f) .stampWidth(40f) .diaphaneity(0f) diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FilePrintRegisterUtils.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FilePrintRegisterUtils.java index 934b992..f46ebe4 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FilePrintRegisterUtils.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/FilePrintRegisterUtils.java @@ -11,6 +11,7 @@ import com.spire.doc.documents.*; import com.spire.doc.fields.DocPicture; import com.spire.doc.fields.TextRange; +import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.apache.poi.xwpf.usermodel.XWPFDocument; @@ -28,6 +29,7 @@ * @Version:1.0 */ +@Slf4j public class FilePrintRegisterUtils { /** @@ -101,7 +103,7 @@ * @param wordNewUrl 新word文件路径 * @param electronicSealList 电子印章信息 */ - private static ElectronicImage addSameKeyWordStamp(String wordOldUrl, String + public static ElectronicImage addSameKeyWordStamp(String wordOldUrl, String wordNewUrl, List electronicSealList) throws RuntimeException { if (CollectionUtils.isEmpty(electronicSealList)) { return null; @@ -110,26 +112,31 @@ // 加载文档 Document document = new Document(); document.loadFromFile(wordOldUrl); + for (ElectronicImage electronicSeal : electronicSealList) { //获取关键字位置 TextSelection[] textSelections = document.findAllString(electronicSeal.getKeyWord(), false, false); //加签章照片 if (ObjectUtils.isEmpty(textSelections) || StringUtils.isEmpty(electronicSeal.getElectronicSealImageUrl())) { - throw new RuntimeException("image url is empty or key word not exist in the word template ..."); + log.warn("image url is empty or key word not exist in the word template ..."); + continue; } //多处关键字添加同一个签章 for (int keyWordIndex = 0; keyWordIndex < textSelections.length; keyWordIndex++) { Paragraph paragraph = textSelections[keyWordIndex].getAsOneRange().getOwnerParagraph(); //添加公司印章 DocPicture docPicture = paragraph.appendPicture(electronicSeal.getElectronicSealImageUrl()); - //设置图片位于文字顶层 - docPicture.setTextWrappingStyle(TextWrappingStyle.In_Front_Of_Text); //表、行、列索引是必填的,兼容之前的代码,之前的代码不用配置 ImageConfig imageConfig = electronicSeal.getImageConfig(); - if (ObjectUtils.isNotEmpty(imageConfig.getTableIndex()) && - ObjectUtils.isNotEmpty(imageConfig.getRowIndex()) && ObjectUtils.isNotEmpty(imageConfig.getColIndex())) { - Section section = textSelections[keyWordIndex].getAsOneRange().getDocument().getLastSection(); + //设置图片位于文字顶层 + docPicture.setTextWrappingStyle(TextWrappingStyle.In_Front_Of_Text); + if (ObjectUtils.isNotEmpty(imageConfig) && + (ObjectUtils.isNotEmpty(imageConfig.getTableIndex()) && imageConfig.getTableIndex() != -1) && + (ObjectUtils.isNotEmpty(imageConfig.getRowIndex()) && imageConfig.getRowIndex() != -1) && + (ObjectUtils.isNotEmpty(imageConfig.getColIndex()) && imageConfig.getColIndex() != -1)) { + paragraph.appendPicture(electronicSeal.getElectronicSealImageUrl()); //指定电子章位置 + Section section = textSelections[keyWordIndex].getAsOneRange().getDocument().getLastSection(); //水平位置 docPicture.setHorizontalAlignment(ShapeHorizontalAlignment.Center); //垂直位置 @@ -147,10 +154,10 @@ docPicture.setWidth(docPicture.getWidth() * imageConfig.getColSpan()); } } else { + //印章和电子签章 + docPicture.setHorizontalPosition(electronicSeal.getKeyWord().length() * 10); docPicture.setWidth(electronicSeal.getStampWidth()); docPicture.setHeight(electronicSeal.getStampHeight()); - docPicture.setHorizontalPosition(electronicSeal.getHorizontal()); - docPicture.setVerticalPosition(electronicSeal.getVertical()); } //带有公章的关键字且页数大于2,需要设置骑缝章 if (INSIGNIA_KEYWORD.equals(electronicSeal.getKeyWord()) && document.getPageCount() >= 2) { @@ -402,9 +409,4 @@ return tmpPath; } - public static void main(String[] args) throws Exception { - //内嵌表信息 - Example.populateTableNest(); - } - } \ No newline at end of file diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/ElectronicSignSeal.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/ElectronicSignSeal.java index cb30b11..05486fd 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/ElectronicSignSeal.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/ElectronicSignSeal.java @@ -147,7 +147,7 @@ public static void bindPictureKey(FilePrintRegister filePrintRegister, List imageConfigList, Map metaDataMap) { //处理文中的章 List extendImageList = imageConfigList.stream() - .filter(imageMap -> "0".equals(imageMap.getApprovalFlag())) + .filter(imageMap -> StringUtils.isEmpty(imageMap.getApprovalFlag()) || "0".equals(imageMap.getApprovalFlag())) .collect(Collectors.toList()); filePrintRegister.getElectronicImageList().addAll(ElectronicSignSeal.electronicKeySignSeals(extendImageList, metaDataMap, filePrintRegister)); } @@ -180,12 +180,13 @@ Calendar calendar = Calendar.getInstance(); calendar.setTime(approvalLog.getFinishTime()); filePrintRegister.getParams().put("year" + timeSeqCount, calendar.get(Calendar.YEAR)); - filePrintRegister.getParams().put("month" + timeSeqCount, calendar.get(Calendar.MONTH)); - filePrintRegister.getParams().put("day" + timeSeqCount, calendar.get(Calendar.DAY_OF_YEAR)); + filePrintRegister.getParams().put("month" + timeSeqCount, calendar.get(Calendar.MONTH)+1); + filePrintRegister.getParams().put("day" + timeSeqCount, calendar.get(Calendar.DAY_OF_MONTH)); //工作流新增理由 filePrintRegister.getParams().put("comment" + timeSeqCount++, approvalLog.getComment()); //设置集合 electronicImage.setElectronicSealImageUrl(filePrintRegister.getTemDir() + signFileName); + electronicImage.setImageConfig(approvalImageList.get(i)); //放入待下载的文件集合 filePrintRegister.getBeDownloadedFileNames().add(signFileName); electronicImageList.add(electronicImage); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/ElectronicSignTemplate.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/ElectronicSignTemplate.java index 84d294d..202e245 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/ElectronicSignTemplate.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/ElectronicSignTemplate.java @@ -30,6 +30,8 @@ } + + /** * 默认电子签章的图片设置,允许重写 */ @@ -65,15 +67,28 @@ /** * 默认电子签名的图片设置,支持重写 */ +// protected static ElectronicImage defaultElectronicSignName(String keyWord) { +// ElectronicImage electronicImage = ElectronicImage.builder() +// .keyWordIndex(-1) +// .keyWord(keyWord) +// .vertical(-10f) +// .horizontal(60f) +// .stampHeight(40f) +// .stampWidth(60f) +// .diaphaneity(150f) +// .build(); +// return electronicImage; +// } + //签名大小位置 protected static ElectronicImage defaultElectronicSignName(String keyWord) { ElectronicImage electronicImage = ElectronicImage.builder() .keyWordIndex(-1) .keyWord(keyWord) .vertical(-10f) - .horizontal(60f) - .stampHeight(40f) - .stampWidth(60f) - .diaphaneity(150f) + .horizontal(0f) + .stampHeight(30f) + .stampWidth(40f) + .diaphaneity(0f) .build(); return electronicImage; } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/FilePrintSupport.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/FilePrintSupport.java index adf9604..9c5506e 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/FilePrintSupport.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/register/data/FilePrintSupport.java @@ -172,9 +172,12 @@ if (ObjectUtils.isNotEmpty(moduleFieldId)) { //获取当前模块配置 ModuleFieldConfig moduleFieldConfig = moduleFieldMapper.selectById(moduleFieldId); - //构建图片元素 - populateMergeColNames(moduleFieldConfig, filePrintRegister); - buildDocImageElement(customParam, filePrintRegister, moduleFieldConfig); + if(ObjectUtils.isNotEmpty(moduleFieldConfig)){ + //构建图片元素 + populateMergeColNames(moduleFieldConfig, filePrintRegister); + buildDocImageElement(customParam, filePrintRegister, moduleFieldConfig); + } + } //通过模块ids集合,进行关联模块参数的获取 String relateModuleIds = moduleTemplatePrintConfig.getRelateModuleFieldIds(); @@ -421,7 +424,7 @@ */ private void buildDocImageElement(Map metaDataMap, FilePrintRegister filePrintRegister, ModuleFieldConfig moduleFieldConfig) { if (StringUtils.isNotEmpty(moduleFieldConfig.getImageJson())) { - //获取审批流程的bean + //转换图片实体配置 List imageConfig = JSON.parseArray(moduleFieldConfig.getImageJson(), ImageConfig.class); //遍历判断是否有工作流字段(approvalField),工作流map取出 ElectronicSignSeal.approvalImage(metaDataMap, moduleFieldConfig.getFlowField(), imageConfig, filePrintRegister);