diff --git a/.idea/libraries/Maven__com_lowagie_itext_2_1_7.xml b/.idea/libraries/Maven__com_lowagie_itext_2_1_7.xml
new file mode 100644
index 000000000..ae673ea65
--- /dev/null
+++ b/.idea/libraries/Maven__com_lowagie_itext_2_1_7.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__fr_opensagres_xdocreport_fr_opensagres_poi_xwpf_converter_core_2_0_2.xml b/.idea/libraries/Maven__fr_opensagres_xdocreport_fr_opensagres_poi_xwpf_converter_core_2_0_2.xml
new file mode 100644
index 000000000..df21c44d2
--- /dev/null
+++ b/.idea/libraries/Maven__fr_opensagres_xdocreport_fr_opensagres_poi_xwpf_converter_core_2_0_2.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__fr_opensagres_xdocreport_fr_opensagres_poi_xwpf_converter_pdf_2_0_2.xml b/.idea/libraries/Maven__fr_opensagres_xdocreport_fr_opensagres_poi_xwpf_converter_pdf_2_0_2.xml
new file mode 100644
index 000000000..6683dce85
--- /dev/null
+++ b/.idea/libraries/Maven__fr_opensagres_xdocreport_fr_opensagres_poi_xwpf_converter_pdf_2_0_2.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__fr_opensagres_xdocreport_fr_opensagres_poi_xwpf_converter_xhtml_2_0_2.xml b/.idea/libraries/Maven__fr_opensagres_xdocreport_fr_opensagres_poi_xwpf_converter_xhtml_2_0_2.xml
new file mode 100644
index 000000000..6fc98a269
--- /dev/null
+++ b/.idea/libraries/Maven__fr_opensagres_xdocreport_fr_opensagres_poi_xwpf_converter_xhtml_2_0_2.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__fr_opensagres_xdocreport_fr_opensagres_xdocreport_converter_2_0_2.xml b/.idea/libraries/Maven__fr_opensagres_xdocreport_fr_opensagres_xdocreport_converter_2_0_2.xml
new file mode 100644
index 000000000..6fea8034f
--- /dev/null
+++ b/.idea/libraries/Maven__fr_opensagres_xdocreport_fr_opensagres_xdocreport_converter_2_0_2.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__fr_opensagres_xdocreport_fr_opensagres_xdocreport_converter_docx_xwpf_2_0_2.xml b/.idea/libraries/Maven__fr_opensagres_xdocreport_fr_opensagres_xdocreport_converter_docx_xwpf_2_0_2.xml
new file mode 100644
index 000000000..56c5ada6b
--- /dev/null
+++ b/.idea/libraries/Maven__fr_opensagres_xdocreport_fr_opensagres_xdocreport_converter_docx_xwpf_2_0_2.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__fr_opensagres_xdocreport_fr_opensagres_xdocreport_core_2_0_2.xml b/.idea/libraries/Maven__fr_opensagres_xdocreport_fr_opensagres_xdocreport_core_2_0_2.xml
new file mode 100644
index 000000000..0c1dfdbbb
--- /dev/null
+++ b/.idea/libraries/Maven__fr_opensagres_xdocreport_fr_opensagres_xdocreport_core_2_0_2.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__fr_opensagres_xdocreport_fr_opensagres_xdocreport_itext_extension_2_0_2.xml b/.idea/libraries/Maven__fr_opensagres_xdocreport_fr_opensagres_xdocreport_itext_extension_2_0_2.xml
new file mode 100644
index 000000000..a99409b04
--- /dev/null
+++ b/.idea/libraries/Maven__fr_opensagres_xdocreport_fr_opensagres_xdocreport_itext_extension_2_0_2.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__fr_opensagres_xdocreport_xdocreport_2_0_2.xml b/.idea/libraries/Maven__fr_opensagres_xdocreport_xdocreport_2_0_2.xml
new file mode 100644
index 000000000..37428aa99
--- /dev/null
+++ b/.idea/libraries/Maven__fr_opensagres_xdocreport_xdocreport_2_0_2.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_apache_poi_ooxml_schemas_1_4.xml b/.idea/libraries/Maven__org_apache_poi_ooxml_schemas_1_4.xml
new file mode 100644
index 000000000..aca2261d6
--- /dev/null
+++ b/.idea/libraries/Maven__org_apache_poi_ooxml_schemas_1_4.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/emis-biz-web/emis-biz-web.iml b/emis-biz-web/emis-biz-web.iml
index 2b4f5d82d..dd71cc2b7 100644
--- a/emis-biz-web/emis-biz-web.iml
+++ b/emis-biz-web/emis-biz-web.iml
@@ -296,5 +296,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/emis-biz/emis-biz.iml b/emis-biz/emis-biz.iml
index 4e9707fa2..bdb0c2751 100644
--- a/emis-biz/emis-biz.iml
+++ b/emis-biz/emis-biz.iml
@@ -255,5 +255,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/emis-biz/lib/aspose-words-15.8.0-jdk16.jar b/emis-biz/lib/aspose-words-15.8.0-jdk16.jar
new file mode 100644
index 000000000..c0e699fc5
Binary files /dev/null and b/emis-biz/lib/aspose-words-15.8.0-jdk16.jar differ
diff --git a/emis-biz/pom.xml b/emis-biz/pom.xml
index edd4db03c..1c41e5009 100644
--- a/emis-biz/pom.xml
+++ b/emis-biz/pom.xml
@@ -65,6 +65,12 @@
org.apache.pdfbox
pdfbox
2.0.9
+
+
+ fontbox
+ org.apache.pdfbox
+
+
org.apache.pdfbox
@@ -127,7 +133,69 @@
1.10.6
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ fr.opensagres.xdocreport
+ xdocreport
+ 2.0.2
+
+
+
+ fr.opensagres.xdocreport
+ fr.opensagres.xdocreport.converter.docx.xwpf
+ 2.0.2
+
+
+
+
+
+
+
+
+
+
+
+ com.aspose
+ aspose-words
+ 15.8.0
+ system
+ ${project.basedir}/lib/aspose-words-15.8.0-jdk16.jar
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisWaybillServiceImpl.java b/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisWaybillServiceImpl.java
index cf3dcfff5..973bb0c16 100644
--- a/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisWaybillServiceImpl.java
+++ b/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisWaybillServiceImpl.java
@@ -11,9 +11,7 @@
package com.xdadan.erp.emis.service.impl;
import java.awt.image.BufferedImage;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
+import java.io.*;
import java.math.BigDecimal;
import java.net.URLEncoder;
import java.text.DecimalFormat;
@@ -45,6 +43,7 @@ import com.xdadan.erp.emis.domain.vo.*;
import com.xdadan.erp.emis.domain.vo.scan.ScanInfo;
import com.xdadan.erp.emis.mapper.*;
import com.xdadan.erp.emis.service.*;
+import com.xdadan.erp.emis.service.warehouse.DocUtils;
import com.xdadan.erp.emis.utils.WaybillHelper;
import com.xdadan.erp.emis.utils.sensitive.Convert;
import com.xdadan.erp.system.service.ISysUserService;
@@ -2272,10 +2271,9 @@ public class EmisWaybillServiceImpl extends EmisBaseService implements IEmisWayb
queryCargo.setWaybillId(emisWaybillOld.getId());
List cargoList=emisWaybillCargoMapper.selectEmisWaybillCargoList(queryCargo);
-
// 生成条码
int width=400;
- int height=80;
+ int height=70;
BufferedImage barcodeImageBuffer = BarcodeUtils.getBarCodeWithWord(emisWaybillOld.getIntoWarehouseBillCode(),width,height,100);
// 填充模版数据
@@ -2333,9 +2331,15 @@ public class EmisWaybillServiceImpl extends EmisBaseService implements IEmisWayb
XWPFTemplate template = XWPFTemplate.compile(fis,config).render(fillMap);
response.setContentType("application/octet-stream");
- response.setHeader("Content-Disposition", "attachment;fileName="+ fileName +".docx");
+ response.setHeader("Content-Disposition", "attachment;fileName="+ fileName +".pdf");
+
+ ByteArrayOutputStream bos=new ByteArrayOutputStream();
+ template.write(bos);
+ ByteArrayInputStream bis = new ByteArrayInputStream(bos.toByteArray());
+
+ DocUtils.wordToPdf(bis, outputStream);
response.flushBuffer();
- template.write(response.getOutputStream());
+
IOUtils.closeQuietly(fis);
IOUtils.closeQuietly(outputStream);
diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/service/warehouse/DocUtils.java b/emis-biz/src/main/java/com/xdadan/erp/emis/service/warehouse/DocUtils.java
new file mode 100644
index 000000000..c241e5b00
--- /dev/null
+++ b/emis-biz/src/main/java/com/xdadan/erp/emis/service/warehouse/DocUtils.java
@@ -0,0 +1,187 @@
+package com.xdadan.erp.emis.service.warehouse;
+
+
+import com.aspose.words.*;
+import com.deepoove.poi.XWPFTemplate;
+import com.deepoove.poi.config.Configure;
+import com.deepoove.poi.data.PictureType;
+import com.deepoove.poi.data.Pictures;
+import com.deepoove.poi.plugin.table.LoopRowTableRenderPolicy;
+import com.xdadan.erp.common.core.pay.vitepay.sdk.Config;
+import com.xdadan.erp.common.utils.BarcodeUtils;
+import com.xdadan.erp.common.utils.StringUtils;
+import com.xdadan.erp.emis.domain.vo.Cargo;
+import lombok.SneakyThrows;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+import java.awt.image.BufferedImage;
+import java.io.*;
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@Component
+@Slf4j
+public class DocUtils {
+
+ // 字体目录
+ public static String FONT_PATH="";
+
+ @Value("${system.fontPath}")
+ public void setFontPath(String fontPath) {
+ DocUtils.FONT_PATH = fontPath;
+ }
+
+ /**
+ * 填充数据
+ * @param input 输入word文件数据流
+ * @param data 需要替换的数据映射
+ * @param output 输出的word文件数据量
+ * @throws IOException
+ */
+ public static void fillData(InputStream input, Map data, OutputStream output) throws IOException {
+ //使用poi-tl.jar中的类填充数据
+ try(XWPFTemplate template = XWPFTemplate.compile(input) ){
+ template.render(data).writeAndClose(output);
+ }catch (Exception ex){
+ throw ex;
+ }
+ }
+
+ // 查看缺少的字体
+ private static class FontSubstitutionWarningCollector implements IWarningCallback {
+ public void warning(WarningInfo info) {
+ if (info.getWarningType() == WarningType.FONT_SUBSTITUTION) {
+ log.error("==>font miss==>{}", info.getDescription());
+ }
+ }
+ }
+
+ /**
+ * word转换为pdf
+ * @param wordInput word文件输入流
+ * @param pdfOutput pdf文件输出流
+ * @throws Exception
+ */
+ public static void wordToPdf(InputStream wordInput, OutputStream pdfOutput) throws Exception {
+ getLicense();
+ //通过aspose-words.jar中的类转换文件
+ Document wordDoc = new Document(wordInput);
+ FontSubstitutionWarningCollector callback = new FontSubstitutionWarningCollector();
+ wordDoc.setWarningCallback(callback);
+ if(!StringUtils.isEmpty(DocUtils.FONT_PATH)) {
+ FontSettings.setFontsFolder(DocUtils.FONT_PATH, false);
+ }
+ PdfSaveOptions pso = new PdfSaveOptions();
+ wordDoc.save(pdfOutput, pso);
+ }
+
+ @SneakyThrows
+ private static void getLicense() {
+ try (InputStream is = DocUtils.class.getClassLoader().getResourceAsStream("License.xml")) {
+ License license = new License();
+ license.setLicense(is);
+ }
+ }
+
+ public static void genPdfByDocxTpl(InputStream tplStream,Map fillDataMap,OutputStream os) throws Exception {
+ ByteArrayOutputStream bos=new ByteArrayOutputStream();
+ fillData(tplStream,fillDataMap,bos);
+ ByteArrayInputStream bis = new ByteArrayInputStream(bos.toByteArray());
+ wordToPdf(bis, os);
+ }
+
+ public static void test() {
+
+ try {
+ int width=400;
+ int height=80;
+
+ BufferedImage barcodeImageBuffer = BarcodeUtils.getBarCodeWithWord("TAN-SHJD-24072701",width,height,100);
+
+ List cargoList= new ArrayList<>();
+
+ Cargo cargo=new Cargo();
+ cargo.setGoodsName("测试");
+ cargo.setCargoQty(1);
+ cargo.setWeight(BigDecimal.valueOf(1.2D));
+ cargo.setWeight(BigDecimal.valueOf(1.2D));
+ cargo.setLength(BigDecimal.valueOf(1.2D));
+ cargo.setWidth(BigDecimal.valueOf(1.2D));
+ cargo.setHeight(BigDecimal.valueOf(1.2D));
+ cargoList.add(cargo);
+
+
+ LoopRowTableRenderPolicy policy = new LoopRowTableRenderPolicy();
+
+ Configure config = Configure.builder()
+ .bind("cargoList", policy).build();
+
+
+
+ XWPFTemplate template = XWPFTemplate.compile("/Users/alan/Downloads/ws_ls_in_tpl.docx",config).render(
+ new HashMap(){{
+ put("wsInNo", "TAN-SHJD-24072701");
+ put("country", "越南");
+ put("warehouse", "柯桥");
+ put("productName", "探路特快");
+ put("estDate", "2024-07-22");
+ put("declareType", "快递报关");
+ put("eDeclareType", "快递清关");
+
+ put("supplier", "供应商");
+
+ put("sendName", "发件人");
+ put("sendTel", "发件电话");
+ put("sendAddress", "发件地址");
+ put("sendCompany", "发件公司");
+
+ put("recvName", "收件人");
+ put("recvTel", "收件电话");
+ put("recvAddress", "收件地址");
+ put("recvCompany", "收件公司");
+
+ put("wsContact", "易大伟");
+ put("wsPhone", "123");
+ put("wsAddress", "南京机场");
+ put("payee", "李晓虎");
+
+ put("barcode", Pictures.ofBufferedImage(barcodeImageBuffer, PictureType.JPEG)
+ .size(width, height).create());
+
+ put("cargoList", cargoList);
+ }});
+
+
+
+ template.writeAndClose(new FileOutputStream("/Users/alan/Downloads/1.docx"));
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+
+ public static void main(String[] args) {
+ try {
+ FileInputStream tpl = new FileInputStream("/Users/alan/Downloads/ws_air_in_tpl.docx");
+ FileOutputStream os = new FileOutputStream("/Users/alan/Downloads/x1.pdf");
+// wordToPdf(inputStream1, os);
+ Map fillDataMap=new HashMap();
+ fillDataMap.put("wsInNo", "TAN-SHJD-24072702221");
+ fillDataMap.put("country", "越南");
+ fillDataMap.put("warehouse", "柯桥");
+ fillDataMap.put("productName", "探路特快");
+ fillDataMap.put("estDate", "2024-07-22");
+ fillDataMap.put("declareType", "快递报关");
+ fillDataMap.put("eDeclareType", "快递清关");
+ genPdfByDocxTpl(tpl,fillDataMap,os);
+
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/service/warehouse/DocXdocUtils.java b/emis-biz/src/main/java/com/xdadan/erp/emis/service/warehouse/DocXdocUtils.java
new file mode 100644
index 000000000..a82125ec4
--- /dev/null
+++ b/emis-biz/src/main/java/com/xdadan/erp/emis/service/warehouse/DocXdocUtils.java
@@ -0,0 +1,99 @@
+package com.xdadan.erp.emis.service.warehouse;
+
+
+import com.aspose.words.*;
+import com.deepoove.poi.XWPFTemplate;
+import com.lowagie.text.Font;
+import com.lowagie.text.pdf.BaseFont;
+import fr.opensagres.poi.xwpf.converter.pdf.PdfConverter;
+import fr.opensagres.poi.xwpf.converter.pdf.PdfOptions;
+import fr.opensagres.xdocreport.itext.extension.font.IFontProvider;
+import fr.opensagres.xdocreport.itext.extension.font.ITextFontRegistry;
+import lombok.SneakyThrows;
+import org.apache.poi.xwpf.usermodel.XWPFDocument;
+
+import java.awt.*;
+import java.io.*;
+import java.util.Map;
+
+public class DocXdocUtils {
+ /**
+ * 填充数据
+ * @param input 输入word文件数据流
+ * @param data 需要替换的数据映射
+ * @param output 输出的word文件数据量
+ * @throws IOException
+ */
+ public static void fillData(InputStream input, Map data, OutputStream output) throws IOException {
+ //使用poi-tl.jar中的类填充数据
+ try(XWPFTemplate template = XWPFTemplate.compile(input) ){
+ template.render(data).writeAndClose(output);
+ }catch (Exception ex){
+ throw ex;
+ }
+ }
+
+
+ private static PdfOptions getPdfOptions() {
+ PdfOptions pdfOptions = PdfOptions.create();
+
+ pdfOptions.fontProvider(new IFontProvider() {
+ public Font getFont(String familyName, String encoding, float size, int style, Color color) {
+ try {
+
+ BaseFont bfSimfang = BaseFont.createFont("/font/simfang.ttf", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
+ BaseFont bfSimSun = BaseFont.createFont("/font/simsun.ttf", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
+ BaseFont bfSimHei = BaseFont.createFont("/font/simhei.ttf", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
+
+ Font fontSimfang = new Font(bfSimfang, size, style, color);
+ fontSimfang.setFamily("仿宋");
+
+ Font fontSimSun = new Font(bfSimSun, size, style, color);
+ fontSimSun.setFamily("宋体");
+
+ Font fontSimHei = new Font(bfSimHei, size, style, color);
+ fontSimHei.setFamily("黑体");
+
+ System.out.println("===>familyName==>"+familyName);
+ if ("仿宋".equals(familyName)) {
+ return fontSimfang;
+ }
+ else if ("宋体".equals(familyName)) {
+ return fontSimSun;
+ }
+ else if ("黑体".equals(familyName)) {
+ return fontSimHei;
+ }
+
+ return fontSimSun;
+ } catch (Throwable e) {
+ e.printStackTrace();
+ // An error occurs, use the default font provider.
+ return ITextFontRegistry.getRegistry().getFont(familyName, encoding, size, style, color);
+ }
+ }
+ });
+ return pdfOptions;
+ }
+
+ public static void convertToPdf(String wordFile, String pdfFile) throws IOException {
+ try (InputStream in = new FileInputStream(wordFile);
+ OutputStream out = new FileOutputStream(pdfFile)) {
+ PdfOptions options = getPdfOptions();
+ XWPFDocument document = new XWPFDocument(in);
+ PdfConverter.getInstance().convert(document, out, options);
+ }
+ }
+
+ public static void main(String[] args) {
+ try {
+
+ String srcFile="/Users/alan/Downloads/1.docx";
+ String destFile="/Users/alan/Downloads/6.pdf";
+ convertToPdf(srcFile,destFile);
+
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/service/warehouse/WordTplUtils.java b/emis-biz/src/main/java/com/xdadan/erp/emis/service/warehouse/WordTplUtils.java
deleted file mode 100644
index f702bd125..000000000
--- a/emis-biz/src/main/java/com/xdadan/erp/emis/service/warehouse/WordTplUtils.java
+++ /dev/null
@@ -1,175 +0,0 @@
-package com.xdadan.erp.emis.service.warehouse;
-
-import com.deepoove.poi.XWPFTemplate;
-import com.deepoove.poi.config.Configure;
-import com.deepoove.poi.data.Numberings;
-import com.deepoove.poi.data.PictureType;
-import com.deepoove.poi.data.Pictures;
-import com.deepoove.poi.plugin.table.LoopRowTableRenderPolicy;
-import com.xdadan.erp.common.utils.BarcodeUtils;
-import com.xdadan.erp.emis.domain.EmisWaybill;
-import com.xdadan.erp.emis.domain.vo.Cargo;
-import org.apache.http.HttpResponse;
-import org.springframework.core.io.ClassPathResource;
-
-import java.awt.image.BufferedImage;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.math.BigDecimal;
-import java.net.URLEncoder;
-import java.nio.charset.StandardCharsets;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-public class WordTplUtils {
-
- public void genWord(OutputStream out, EmisWaybill waybill) throws IOException {
-
-// XWPFTemplate template = XWPFTemplate.compile(tplFile);
-// // 数据填充
-// template.render(fillMap);
-// template.write(out);
-// out.flush();
-
- try {
- int width=350;
- int height=40;
-
- BufferedImage barcodeImageBuffer = BarcodeUtils.getBarCodeWithWord("TAN-SHJD-24072701",width,height,70);
-
- List cargoList= new ArrayList<>();
-
- Cargo cargo=new Cargo();
- cargo.setGoodsName("测试");
- cargo.setCargoQty(1);
- cargo.setWeight(BigDecimal.valueOf(1.2D));
- cargo.setWeight(BigDecimal.valueOf(1.2D));
- cargo.setLength(BigDecimal.valueOf(1.2D));
- cargo.setWidth(BigDecimal.valueOf(1.2D));
- cargo.setHeight(BigDecimal.valueOf(1.2D));
- cargoList.add(cargo);
-
-
- LoopRowTableRenderPolicy policy = new LoopRowTableRenderPolicy();
-
- Configure config = Configure.builder()
- .bind("cargoList", policy).build();
-
-
- InputStream fis = new ClassPathResource("tpl/ws_in_tpl.docx").getInputStream();
- XWPFTemplate template = XWPFTemplate.compile("/Users/alan/Downloads/ws_air_in_tpl.docx",config).render(
- new HashMap(){{
- put("wsInNo", "TAN-SHJD-24072701");
- put("country", "越南");
- put("warehouse", "柯桥");
- put("productName", "探路特快");
- put("estDate", "2024-07-22");
- put("declareType", "快递报关");
- put("eDeclareType", "快递清关");
-
- put("supplier", "供应商");
-
- put("sendName", "发件人");
- put("sendTel", "发件电话");
- put("sendAddress", "发件地址");
- put("sendCompany", "发件公司");
-
- put("recvName", "收件人");
- put("recvTel", "收件电话");
- put("recvAddress", "收件地址");
- put("recvCompany", "收件公司");
-
- put("wsContact", "易大伟");
- put("wsPhone", "123");
- put("wsAddress", "南京机场");
- put("payee", "李晓虎");
-
- put("barcode", Pictures.ofBufferedImage(barcodeImageBuffer, PictureType.JPEG)
- .size(width, height).create());
-
- put("cargoList", cargoList);
- }});
-
-
-
- template.writeAndClose(new FileOutputStream("/Users/alan/Downloads/1.docx"));
- } catch (IOException e) {
- e.printStackTrace();
- }
-
-
- }
-
- public static void main(String[] args) {
-
- try {
- int width=400;
- int height=80;
-
- BufferedImage barcodeImageBuffer = BarcodeUtils.getBarCodeWithWord("TAN-SHJD-24072701",width,height,100);
-
- List cargoList= new ArrayList<>();
-
- Cargo cargo=new Cargo();
- cargo.setGoodsName("测试");
- cargo.setCargoQty(1);
- cargo.setWeight(BigDecimal.valueOf(1.2D));
- cargo.setWeight(BigDecimal.valueOf(1.2D));
- cargo.setLength(BigDecimal.valueOf(1.2D));
- cargo.setWidth(BigDecimal.valueOf(1.2D));
- cargo.setHeight(BigDecimal.valueOf(1.2D));
- cargoList.add(cargo);
-
-
- LoopRowTableRenderPolicy policy = new LoopRowTableRenderPolicy();
-
- Configure config = Configure.builder()
- .bind("cargoList", policy).build();
-
-
-
- XWPFTemplate template = XWPFTemplate.compile("/Users/alan/Downloads/ws_ls_in_tpl.docx",config).render(
- new HashMap(){{
- put("wsInNo", "TAN-SHJD-24072701");
- put("country", "越南");
- put("warehouse", "柯桥");
- put("productName", "探路特快");
- put("estDate", "2024-07-22");
- put("declareType", "快递报关");
- put("eDeclareType", "快递清关");
-
- put("supplier", "供应商");
-
- put("sendName", "发件人");
- put("sendTel", "发件电话");
- put("sendAddress", "发件地址");
- put("sendCompany", "发件公司");
-
- put("recvName", "收件人");
- put("recvTel", "收件电话");
- put("recvAddress", "收件地址");
- put("recvCompany", "收件公司");
-
- put("wsContact", "易大伟");
- put("wsPhone", "123");
- put("wsAddress", "南京机场");
- put("payee", "李晓虎");
-
- put("barcode", Pictures.ofBufferedImage(barcodeImageBuffer, PictureType.JPEG)
- .size(width, height).create());
-
- put("cargoList", cargoList);
- }});
-
-
-
- template.writeAndClose(new FileOutputStream("/Users/alan/Downloads/1.docx"));
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
-}
diff --git a/emis-biz/src/main/resources/License.xml b/emis-biz/src/main/resources/License.xml
new file mode 100644
index 000000000..2cbce4555
--- /dev/null
+++ b/emis-biz/src/main/resources/License.xml
@@ -0,0 +1,15 @@
+
+
+
+ Aspose.Total for Java
+ Aspose.Words for Java
+
+ Enterprise
+ 20991231
+ 20991231
+ 8bfe198c-7f0c-4ef8-8ff0-acc3237bf0d7
+
+
+ sNLLKGMUdF0r8O1kKilWAGdgfs2BvJb/2Xp8p5iuDVfZXmhppo+d0Ran1P9TKdjV4ABwAgKXxJ3jcQTqE/2IRfqwnPf8itN8aFZlV3TJPYeD3yWE7IT55Gz6EijUpC7aKeoohTb4w2fpox58wWoF3SNp6sK6jDfiAUGEHYJ9pjU=
+
+
diff --git a/emis-biz/src/main/resources/font/simfang.ttf b/emis-biz/src/main/resources/font/simfang.ttf
new file mode 100644
index 000000000..2b59eae41
Binary files /dev/null and b/emis-biz/src/main/resources/font/simfang.ttf differ