From c93ad66797e4830ccf4de81c1e8787ab90b22791 Mon Sep 17 00:00:00 2001
From: feiyu02 <risaku@163.com>
Date: 星期一, 04 七月 2022 16:07:28 +0800
Subject: [PATCH] 1. 承诺书pdf生产模块

---
 src/main/resources/templates/commitment-construction.docx                                         |    0 
 src/main/resources/templates/pdfDemo5.docx                                                        |    0 
 src/main/resources/templates/pdfDemo.ftl                                                          |  280 ++++++++++++++++++
 src/main/kotlin/cn/flightfeather/supervision/common/pdf/GeneratePdfUtil.kt                        |  107 +++++++
 src/main/kotlin/cn/flightfeather/supervision/lightshare/service/CommitmentService.kt              |    2 
 src/main/kotlin/cn/flightfeather/supervision/lightshare/service/Impl/CommitmentServiceImpl.kt     |   13 
 src/main/resources/templates/temporary.html                                                       |  280 ++++++++++++++++++
 src/test/kotlin/cn/flightfeather/supervision/lightshare/service/Impl/CommitmentServiceImplTest.kt |   40 ++
 src/main/kotlin/cn/flightfeather/supervision/lightshare/web/CommitmentController.kt               |    7 
 pom.xml                                                                                           |   47 ++
 src/main/kotlin/cn/flightfeather/supervision/common/pdf/DynamicParam.kt                           |   21 +
 src/main/kotlin/cn/flightfeather/supervision/common/pdf/PdfUtil.kt                                |   82 +++++
 src/main/resources/application.yml                                                                |   12 
 13 files changed, 873 insertions(+), 18 deletions(-)

diff --git a/pom.xml b/pom.xml
index ab5d11b..cfa143f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -28,6 +28,7 @@
         <!-- tk.mybatis -->
         <mapper.plugin>tk.mybatis.mapper.generator.MapperPlugin</mapper.plugin>
         <mapper.Mapper>tk.mybatis.mapper.common.Mapper</mapper.Mapper>
+        <itext.version>7.2.2</itext.version>
     </properties>
 
     <dependencies>
@@ -267,6 +268,19 @@
             <artifactId>poi</artifactId>
             <version>4.1.2</version>
         </dependency>
+        <!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml -->
+        <dependency>
+            <groupId>org.apache.poi</groupId>
+            <artifactId>poi-ooxml</artifactId>
+            <version>4.1.2</version>
+        </dependency>
+        <!-- https://mvnrepository.com/artifact/org.apache.poi/poi-excelant -->
+<!--        <dependency>-->
+<!--            <groupId>org.apache.poi</groupId>-->
+<!--            <artifactId>poi-excelant</artifactId>-->
+<!--            <version>5.2.2</version>-->
+<!--        </dependency>-->
+
 
         <!--闃块噷浜戞帹閫�-->
         <dependency>
@@ -297,27 +311,31 @@
 
 
         <!-- pdf:start -->
+        <!-- https://mvnrepository.com/artifact/com.itextpdf/itext7-core -->
         <dependency>
             <groupId>com.itextpdf</groupId>
-            <artifactId>itextpdf</artifactId>
-            <version>5.5.13.3</version>
+            <artifactId>itext7-core</artifactId>
+            <version>${itext.version}</version>
+            <type>pom</type>
         </dependency>
-        <dependency>
-            <groupId>com.itextpdf.tool</groupId>
-            <artifactId>xmlworker</artifactId>
-            <version>5.5.13.3</version>
-        </dependency>
-        <!-- 鏀寔涓枃 -->
+        <!-- https://mvnrepository.com/artifact/com.itextpdf/html2pdf -->
         <dependency>
             <groupId>com.itextpdf</groupId>
-            <artifactId>itext-asian</artifactId>
-            <version>5.2.0</version>
+            <artifactId>html2pdf</artifactId>
+            <version>4.0.2</version>
+        </dependency>
+        <!-- https://mvnrepository.com/artifact/com.itextpdf/font-asian -->
+        <dependency>
+            <groupId>com.itextpdf</groupId>
+            <artifactId>font-asian</artifactId>
+            <version>${itext.version}</version>
+            <scope>test</scope>
         </dependency>
         <!-- 鏀寔css鏍峰紡娓叉煋 -->
         <dependency>
             <groupId>org.xhtmlrenderer</groupId>
             <artifactId>flying-saucer-pdf-itext5</artifactId>
-            <version>9.1.22</version>
+            <version>9.1.16</version>
         </dependency>
         <!-- 杞崲html涓烘爣鍑唜html鍖� -->
         <dependency>
@@ -325,7 +343,12 @@
             <artifactId>jtidy</artifactId>
             <version>r938</version>
         </dependency>
-        <!-- pdf:end -->
+        <!-- https://mvnrepository.com/artifact/org.freemarker/freemarker -->
+        <dependency>
+            <groupId>org.freemarker</groupId>
+            <artifactId>freemarker</artifactId>
+            <version>2.3.31</version>
+        </dependency>
 
     </dependencies>
 
diff --git a/src/main/kotlin/cn/flightfeather/supervision/common/pdf/DynamicParam.kt b/src/main/kotlin/cn/flightfeather/supervision/common/pdf/DynamicParam.kt
new file mode 100644
index 0000000..bf7ca2d
--- /dev/null
+++ b/src/main/kotlin/cn/flightfeather/supervision/common/pdf/DynamicParam.kt
@@ -0,0 +1,21 @@
+package cn.flightfeather.supervision.common.pdf
+
+import java.io.File
+
+/**
+ * @Description: 鐢熸垚PDF鍙傛暟
+ * @author lgd
+ * @date 2022骞�4鏈�27鏃� 涓嬪崍6:04:56
+ */
+data class DynamicParam(
+    // 妯$増璺緞
+    val templatePath: String,
+    // 妯℃澘鏂囦欢鍚�(.ftl缁撳熬)
+    val templateName: String,
+    // 鐢熸垚璺緞
+    val outPath: String,
+    // 鐢熸垚鏂囦欢鍚�(.pdf缁撳熬)
+    val outName: String,
+    // 鎵�闇�鏂囨湰鍙傛暟
+    val param: Map<String, Any>
+)
\ No newline at end of file
diff --git a/src/main/kotlin/cn/flightfeather/supervision/common/pdf/GeneratePdfUtil.kt b/src/main/kotlin/cn/flightfeather/supervision/common/pdf/GeneratePdfUtil.kt
new file mode 100644
index 0000000..4f3e65e
--- /dev/null
+++ b/src/main/kotlin/cn/flightfeather/supervision/common/pdf/GeneratePdfUtil.kt
@@ -0,0 +1,107 @@
+package cn.flightfeather.supervision.common.pdf
+
+import com.itextpdf.html2pdf.ConverterProperties
+import com.itextpdf.html2pdf.HtmlConverter
+import com.itextpdf.layout.font.FontProvider
+import com.itextpdf.text.pdf.BaseFont
+import freemarker.template.Configuration
+import org.xhtmlrenderer.pdf.ITextRenderer
+import java.io.*
+import javax.servlet.http.HttpServletResponse
+
+/**
+ * @Description: 鐢熸垚PDF鍚堝悓宸ュ叿绫�
+ */
+object GeneratePdfUtil {
+    private const val TEMPORARY_CONTRACT_HTML = "src/main/resources/templates/temporary.html"
+
+    private const val SIMSUM_FILE = "src/main/resources/font/simsun.ttc"
+    @Throws(Exception::class)
+    fun generateContract(param: DynamicParam): String {
+        // 鐢熸垚html鍚堝悓
+        generateHTML(param.templatePath, param.templateName, param.param)
+        // 鏍规嵁html鍚堝悓鐢熸垚pdf鍚堝悓
+        generatePDF(param.outPath + param.outName)
+        // 鍒犻櫎涓存椂html鏍煎紡鍚堝悓
+//        removeFile(TEMPORARY_CONTRACT_HTML)
+        return param.outPath + param.outName
+    }
+
+    /**
+     * @Description 鐢熸垚html鏍煎紡鍚堝悓
+     */
+    @Throws(Exception::class)
+    private fun generateHTML(templatePath: String, templateName: String, paramMap: Map<String, Any>) {
+        val cfg = Configuration()
+        cfg.defaultEncoding = "UTF-8"
+        /**
+         * 1.setClassForTemplateLoading(this.getClass(), "/HttpWeb");
+         * 鍩轰簬绫昏矾寰勶紝HttpWeb鍖呬笅鐨刦ramemaker.ftl鏂囦欢
+         * 2.setDirectoryForTemplateLoading(new File("/template"));
+         * 鍩轰簬鏂囦欢绯荤粺,template鐩綍涓嬬殑鏂囦欢
+         * 3.setServletContextForTemplateLoading(request.getSession().getServletContext(), "/template");
+         * 鍩轰簬Servlet Context锛屾寚鐨勬槸鍩轰簬WebRoot涓嬬殑template涓嬬殑framemaker.ftl鏂囦欢
+         */
+        cfg.setDirectoryForTemplateLoading(File(templatePath))
+
+        // templateName.ftl涓鸿瑁呰浇鐨勬ā鏉�
+        val template = cfg.getTemplate(templateName)
+        val outHtmFile = File(TEMPORARY_CONTRACT_HTML)
+        val out: Writer = BufferedWriter(OutputStreamWriter(FileOutputStream(outHtmFile)))
+        // 灏嗗弬鏁拌緭鍑哄埌妯$増锛屽苟鎿嶄綔鍒癏TML涓�
+        template.process(paramMap, out)
+        out.close()
+    }
+
+    /**
+     * @Description 鏍规嵁html鐢熸垚pdf鏍煎紡鍚堝悓
+     */
+    @Throws(Exception::class)
+    private fun generatePDF(pdfUrl: String) {
+        val htmFile = File(TEMPORARY_CONTRACT_HTML)
+        val pdfFile = File(pdfUrl)
+        println(pdfUrl)
+//        val url = htmFile.toURI()
+//        val os: OutputStream = FileOutputStream(pdfFile)
+//        val renderer = ITextRenderer()
+//        renderer.setDocument(url)
+//        val fontResolver = renderer.fontResolver
+//        // 瑙e喅涓枃鏀寔闂
+//        fontResolver.addFont(SIMSUM_FILE, BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED)
+//        renderer.layout()
+//        renderer.createPDF(os)
+//        os.close()
+        val p = ConverterProperties()
+        p.fontProvider = FontProvider().apply {
+//            this.addFont(SIMSUM_FILE)
+            this.addDirectory("src/main/resources/font/")
+        }
+        HtmlConverter.convertToPdf(htmFile, pdfFile, p)
+    }
+
+    /**
+     * @Description 绉婚櫎鏂囦欢
+     */
+    private fun removeFile(fileUrl: String) {
+        val file = File(fileUrl)
+        file.delete()
+    }
+
+    @Throws(Exception::class)
+    fun returnPdfStream(response: HttpServletResponse, pathName: String?) {
+        response.contentType = "application/pdf"
+        val file = File(pathName)
+        if (file.exists()) {
+            val `in` = FileInputStream(file)
+            val out: OutputStream = response.outputStream
+            val b = ByteArray(1024 * 5)
+            var n: Int
+            while (`in`.read(b).also { n = it } != -1) {
+                out.write(b, 0, n)
+            }
+            out.flush()
+            `in`.close()
+            out.close()
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/main/kotlin/cn/flightfeather/supervision/common/pdf/PdfUtil.kt b/src/main/kotlin/cn/flightfeather/supervision/common/pdf/PdfUtil.kt
new file mode 100644
index 0000000..f85361f
--- /dev/null
+++ b/src/main/kotlin/cn/flightfeather/supervision/common/pdf/PdfUtil.kt
@@ -0,0 +1,82 @@
+package cn.flightfeather.supervision.common.pdf
+
+import org.apache.poi.util.Units
+import org.apache.poi.xwpf.usermodel.XWPFDocument
+import org.apache.poi.xwpf.usermodel.XWPFParagraph
+import java.io.File
+import java.io.FileInputStream
+import java.io.FileOutputStream
+import java.io.IOException
+
+
+object PdfUtil {
+
+    fun generateContract(dynamicParam: DynamicParam): String {
+        val src = dynamicParam.templatePath+dynamicParam.templateName
+        val out = dynamicParam.outPath + dynamicParam.outName
+
+        val inputStream = FileInputStream(File(src))
+        val xwpfDocument = XWPFDocument(inputStream)
+
+        replace(xwpfDocument, dynamicParam.param)
+
+        output(xwpfDocument, out)
+
+        return out
+    }
+
+    /**
+     * 鏇挎崲娈佃惤涓寚瀹氱殑鏂囨湰
+     */
+    fun replace(doc:XWPFDocument, params:Map<String, Any>) {
+        try {
+            setContent(doc.paragraphs, params)
+
+            for (tab in doc.tables) {
+                for (row in tab.rows) {
+                    for (cell in row.tableCells) {
+                        //娉ㄦ剰锛実etParagraphs涓�瀹氫笉鑳芥紡鎺�
+                        //鍥犱负涓�涓〃鏍奸噷闈㈠彲鑳戒細鏈夊涓渶瑕佹浛鎹㈢殑鏂囧瓧
+                        //濡傛灉娌℃湁杩欎釜姝ラ閭d箞鏂囧瓧浼氭浛鎹笉浜�
+                        setContent(cell.paragraphs, params)
+                    }
+                }
+            }
+        } catch (e: IOException) {
+            e.printStackTrace()
+        }
+    }
+
+    private fun setContent(paragraphs: List<XWPFParagraph>, params: Map<String, Any>) {
+        for (p in paragraphs) {
+            for (r in p.runs) {
+                //闇�瑕佹浛鎹㈢殑鏂囨湰
+                val text = r.getText(0)
+                //鏇挎崲鎸囧畾鐨勬枃鏈�
+                for (key in params.keys) {
+                    if (text != null && text == key) {
+                        //鏇挎崲鐨勬椂鍊欒娉ㄦ剰锛宻etText鏄湁涓や釜鍙傛暟鐨�
+                        //绗竴涓槸鏇挎崲鐨勬枃鏈紝绗簩涓槸浠庡摢閲屽紑濮嬫浛鎹�
+                        //0鏄浛鎹㈠叏閮紝濡傛灉涓嶈缃偅涔堥粯璁ゅ氨鏄粠鍘熸枃瀛�
+                        //缁撳熬寮�濮嬭拷鍔�
+                        val v = params[key]
+                        when (v) {
+                            is String -> r.setText(v, 0)
+                            is File -> {
+                                val input = FileInputStream(v)
+                                val pic = r.addPicture(input, XWPFDocument.PICTURE_TYPE_JPEG, v.name, Units.toEMU(40.0), Units.toEMU(40.0))
+
+                                input.close()
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    }
+
+    fun output(doc: XWPFDocument, outSrc: String) {
+        doc.write(FileOutputStream(outSrc))
+        doc.close()
+    }
+}
\ No newline at end of file
diff --git a/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/CommitmentService.kt b/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/CommitmentService.kt
index 5f96bcc..5f887fa 100644
--- a/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/CommitmentService.kt
+++ b/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/CommitmentService.kt
@@ -9,4 +9,6 @@
     fun getLetterOfCommitment(userId: String, page: Int, perPage: Int, response: HttpServletResponse): List<Commitment>
 
     fun uploadLetterOfCommitment(userId: String, commitmentVoList: String, files: Array<MultipartFile>): Boolean
+
+    fun createLetterOfCommitment(userId: String, params: MutableMap<String, Any>): String
 }
\ No newline at end of file
diff --git a/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/Impl/CommitmentServiceImpl.kt b/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/Impl/CommitmentServiceImpl.kt
index 85e8d33..795468e 100644
--- a/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/Impl/CommitmentServiceImpl.kt
+++ b/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/Impl/CommitmentServiceImpl.kt
@@ -1,5 +1,8 @@
 package cn.flightfeather.supervision.lightshare.service.Impl
 
+import cn.flightfeather.supervision.common.pdf.DynamicParam
+import cn.flightfeather.supervision.common.pdf.GeneratePdfUtil
+import cn.flightfeather.supervision.common.pdf.PdfUtil
 import cn.flightfeather.supervision.domain.entity.Commitment
 import cn.flightfeather.supervision.domain.mapper.CommitmentMapper
 import cn.flightfeather.supervision.infrastructure.utils.DateUtil
@@ -76,4 +79,14 @@
 
         return commitmentVos.size == success
     }
+
+    override fun createLetterOfCommitment(userId: String, params: MutableMap<String, Any>): String {
+        val templatePath = (Thread.currentThread().contextClassLoader?.getResource("/")?.path ?: "src/main") + "/resources/templates/"
+        val templateName = "pdfDemo.ftl"
+        val contractPath = (Thread.currentThread().contextClassLoader?.getResource("/")?.path ?: "src/main") + "/resources/templates/"
+        val contractName = "pdfDemo5.pdf"
+        val param = DynamicParam(templatePath, templateName, contractPath, contractName, params)
+        GeneratePdfUtil.generateContract(param)
+        return ""
+    }
 }
\ No newline at end of file
diff --git a/src/main/kotlin/cn/flightfeather/supervision/lightshare/web/CommitmentController.kt b/src/main/kotlin/cn/flightfeather/supervision/lightshare/web/CommitmentController.kt
index 17184e8..d9c7558 100644
--- a/src/main/kotlin/cn/flightfeather/supervision/lightshare/web/CommitmentController.kt
+++ b/src/main/kotlin/cn/flightfeather/supervision/lightshare/web/CommitmentController.kt
@@ -34,4 +34,11 @@
         @ApiParam(value = "鎵胯涔︿俊鎭痡son") @RequestParam("params") commitmentVoList: String,
         @ApiParam(value = "鎵胯涔﹀浘鐗�") @RequestPart("images") files: Array<MultipartFile>
     ) = commitmentService.uploadLetterOfCommitment(userId, commitmentVoList, files)
+
+    @ApiOperation(value = "鐢熶骇鎵胯涔�")
+    @PostMapping("/letter/create")
+    fun createLetterOfCommitment(
+        @ApiParam(value = "鐢ㄦ埛id") @RequestParam userId: String,
+        @ApiParam(value = "鎵胯涔﹀弬鏁�") @RequestBody params: MutableMap<String, Any>
+    ) = commitmentService.createLetterOfCommitment(userId, params)
 }
\ No newline at end of file
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index bcaccfa..af25bea 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -12,14 +12,14 @@
 #    password: 123456
     #-TestEnd-
 
-    url: jdbc:mysql://localhost:3306/ledger?serverTimezone=Asia/Shanghai&prepStmtCacheSize=517&cachePrepStmts=true&autoReconnect=true&characterEncoding=utf-8&allowMultiQueries=true&useSSL=false
-    username: ledger
-    password: ledger_fxxchackxr
+#    url: jdbc:mysql://localhost:3306/ledger?serverTimezone=Asia/Shanghai&prepStmtCacheSize=517&cachePrepStmts=true&autoReconnect=true&characterEncoding=utf-8&allowMultiQueries=true&useSSL=false
+#    username: ledger
+#    password: ledger_fxxchackxr
 
     #   寮�鍙戣繙绋嬫湇鍔″櫒
-#    url: jdbc:mysql://47.100.191.150:3306/ledger?serverTimezone=Asia/Shanghai&prepStmtCacheSize=517&cachePrepStmts=true&autoReconnect=true&characterEncoding=utf-8&allowMultiQueries=true&useSSL=false
-#    username: remoteU1
-#    password: eSoF8DnzfGTlhAjE
+    url: jdbc:mysql://47.100.191.150:3306/ledger?serverTimezone=Asia/Shanghai&prepStmtCacheSize=517&cachePrepStmts=true&autoReconnect=true&characterEncoding=utf-8&allowMultiQueries=true&useSSL=false
+    username: remoteU1
+    password: eSoF8DnzfGTlhAjE
 
     initialSize: 5
     minIdle: 5
diff --git a/src/main/resources/templates/commitment-construction.docx b/src/main/resources/templates/commitment-construction.docx
new file mode 100644
index 0000000..1124045
--- /dev/null
+++ b/src/main/resources/templates/commitment-construction.docx
Binary files differ
diff --git a/src/main/resources/templates/pdfDemo.ftl b/src/main/resources/templates/pdfDemo.ftl
new file mode 100644
index 0000000..1174eba
--- /dev/null
+++ b/src/main/resources/templates/pdfDemo.ftl
@@ -0,0 +1,280 @@
+锘�<html>
+
+<head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    <meta http-equiv="Content-Style-Type" content="text/css" />
+    <meta name="generator" content="Aspose.Words for .NET 15.1.0.0" />
+    <title></title>
+</head>
+
+<body>
+    <div>
+        <p style="font-size:18pt; line-height:115%; margin:0pt 0pt 10pt; orphans:0; text-align:center; widows:0">
+            <!-- <span style=" font-size:18pt; font-weight:bold">涓婃捣甯�</span>
+            <span style=" font-size:18pt; font-weight:bold">寰愭眹鍖�</span> -->
+            <span style=" font-size:18pt; font-weight:bold">寤鸿宸ュ湴</span>
+            <span style=" font-size:18pt; font-weight:bold">鐜淇$敤鎵胯涔�</span>
+        </p>
+        <div style="text-align:center">
+            <table cellspacing="0" cellpadding="0" style="border-collapse:collapse; margin:0 auto; width:501.7pt">
+                <tr style="height:24.6pt">
+                    <td colspan="2"
+                        style="border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:106.85pt">
+                        <p
+                            style="font-size:12pt; line-height:115%; margin:0pt 0pt 10pt; orphans:0; text-align:center; widows:0">
+                            <span style=" font-size:12pt">鏂藉伐</span><span
+                                style=" font-size:12pt">鍗曚綅鍚嶇О</span>
+                        </p>
+                    </td>
+                    <td colspan="3"
+                        style="border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.4pt; padding-right:5.03pt; vertical-align:middle; width:372.5pt">
+                        <p
+                            style="font-size:12pt; line-height:115%; margin:0pt 0pt 10pt; orphans:0; text-align:center; widows:0">
+                            <span style=" font-size:12pt">${Department}</span>
+                        </p>
+                    </td>
+                </tr>
+                <tr style="height:25.75pt">
+                    <td colspan="2"
+                        style="border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:106.85pt">
+                        <p
+                            style="font-size:12pt; line-height:115%; margin:0pt 0pt 10pt; orphans:0; text-align:center; widows:0">
+                            <span style=" font-size:12pt">缁熶竴绀句細淇$敤浠g爜</span>
+                        </p>
+                    </td>
+                    <td
+                        style="border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.4pt; padding-right:5.03pt; vertical-align:middle; width:133.55pt">
+                        <p
+                            style="font-size:12pt; line-height:115%; margin:0pt 0pt 10pt; orphans:0; text-align:center; widows:0">
+                            <span style=" font-size:12pt">${SocialCode}</span>
+                        </p>
+                    </td>
+                    <td
+                        style="border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.4pt; padding-right:5.03pt; vertical-align:middle; width:97.8pt">
+                        <p
+                            style="font-size:12pt; line-height:115%; margin:0pt 0pt 10pt; orphans:0; text-align:center; widows:0">
+                            <span style=" font-size:12pt">宸ュ湴</span><span
+                                style=" font-size:12pt">鎶ュ缓鍙�</span>
+                        </p>
+                    </td>
+                    <td
+                        style="border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.4pt; padding-right:5.03pt; vertical-align:middle; width:119.55pt">
+                        <p
+                            style="font-size:12pt; line-height:115%; margin:0pt 0pt 10pt; orphans:0; text-align:center; widows:0">
+                            <span style=" font-size:12pt">${ConstructionNo}</span>
+                        </p>
+                    </td>
+                </tr>
+                <tr style="height:24.95pt">
+                    <td colspan="2"
+                        style="border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:106.85pt">
+                        <p
+                            style="font-size:12pt; line-height:115%; margin:0pt 0pt 10pt; orphans:0; text-align:center; widows:0">
+                            <span style=" font-size:12pt">娉曚汉</span><span
+                                style=" font-size:12pt">浠h〃</span><span
+                                style=" font-size:12pt">濮撳悕</span>
+                        </p>
+                    </td>
+                    <td
+                        style="border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.4pt; padding-right:5.03pt; vertical-align:middle; width:133.55pt">
+                        <p
+                            style="font-size:12pt; line-height:115%; margin:0pt 0pt 10pt; orphans:0; text-align:center; widows:0">
+                            <span style=" font-size:12pt">${JuridicalPerson}</span>
+                        </p>
+                    </td>
+                    <td
+                        style="border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.4pt; padding-right:5.03pt; vertical-align:middle; width:97.8pt">
+                        <p
+                            style="font-size:12pt; line-height:115%; margin:0pt 0pt 10pt; orphans:0; text-align:center; widows:0">
+                            <span style=" font-size:12pt">娉曚汉</span><span
+                                style=" font-size:12pt">浠h〃</span><span
+                                style=" font-size:12pt">韬唤璇佸彿</span>
+                        </p>
+                    </td>
+                    <td
+                        style="border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.4pt; padding-right:5.03pt; vertical-align:middle; width:119.55pt">
+                        <p
+                            style="font-size:12pt; line-height:115%; margin:0pt 0pt 10pt; orphans:0; text-align:center; widows:0">
+                            <span style=" font-size:12pt">${IdNo}</span>
+                        </p>
+                    </td>
+                </tr>
+                <tr style="height:42.7pt">
+                    <td colspan="2"
+                        style="border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:106.85pt">
+                        <p style="line-height:20pt; margin:0pt 0pt 10pt; orphans:0; text-align:center; widows:0"><span
+                                style=" font-size:12pt">鐜淇$敤鎵胯绫诲瀷</span></p>
+                    </td>
+                    <td colspan="3"
+                        style="border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.4pt; padding-right:5.03pt; vertical-align:middle; width:372.5pt">
+                        <p style="line-height:20pt; margin:0pt 0pt 10pt; orphans:0; text-align:justify; widows:0"><span
+                                style=" font-size:12pt">${Type1}鐜繚涓讳綋璐d换鎵胯锛�${Type2}鐜琛屾斂璁稿彲浜嬮」锛浡� </span></p>
+                        <p style="line-height:20pt; margin:0pt 0pt 10pt; orphans:0; text-align:justify; widows:0"><span
+                                style=" font-size:12pt">${Type3}鐜繚涓撻」璧勯噾鎴栧叾浠栬祫閲戣ˉ鍔╋紱${Type4}鍏朵粬鐜繚鐢虫姤浜嬮」</span></p>
+                    </td>
+                </tr>
+                <tr style="height:88.5pt">
+                    <td
+                        style="border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:31.5pt">
+                        <p
+                            style="font-size:14pt; line-height:115%; margin:0pt 0pt 10pt; orphans:0; text-align:center; widows:0">
+                            <span style=" font-size:14pt">鎵�</span>
+                        </p>
+                        <p
+                            style="font-size:14pt; line-height:115%; margin:0pt 0pt 10pt; orphans:0; text-align:center; widows:0">
+                            <span style=" font-size:14pt">璇�</span>
+                        </p>
+                        <p
+                            style="font-size:14pt; line-height:115%; margin:0pt 0pt 10pt; orphans:0; text-align:center; widows:0">
+                            <span style=" font-size:14pt">浜�</span>
+                        </p>
+                        <p
+                            style="font-size:14pt; line-height:115%; margin:0pt 0pt 10pt; orphans:0; text-align:center; widows:0">
+                            <span style=" font-size:14pt">椤�</span>
+                        </p>
+                    </td>
+                    <td colspan="4"
+                        style="border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.4pt; padding-right:5.03pt; vertical-align:top; width:447.85pt">
+                        <p
+                            style="line-height:20pt; margin:0pt 0pt 10pt; orphans:0; text-align:justify; text-indent:21pt; widows:0">
+                            <span style=" font-size:12pt">涓鸿返琛岀豢鑹插彂灞曠悊蹇碉紝鍔姏钀ラ�犺瘹瀹炲畧淇$殑绀句細鐜锛岃惤瀹�</span><span
+                                style=" font-size:12pt">鏂藉伐</span><span
+                                style=" font-size:12pt">鍗曚綅鐜繚璐d换锛�</span><span
+                                style=" font-size:12pt">闄嶄綆鍥犵幆澧冪瓑鍥犵礌閫犳垚鐨�</span><span
+                                style=" font-size:12pt">鎵皹姹℃煋</span><span
+                                style=" font-size:12pt">闅愭偅鍜屽眳姘戠籂绾�</span><span
+                                style=" font-size:12pt">锛�</span><span
+                                style=" font-size:12pt">纭繚</span><span
+                                style=" font-size:12pt">寤虹瓚涓�</span><span
+                                style=" font-size:12pt">鍋ュ悍鏈夊簭鍙戝睍</span><span
+                                style=" font-size:12pt">锛�</span><span
+                                style=" font-size:12pt">鏈崟浣嶏紙鎴栨湰浜猴級鑷効浣滃嚭濡備笅鎵胯锛�</span>
+                        </p>
+                        <p
+                            style="line-height:20pt; margin:0pt 0pt 10pt; orphans:0; text-align:justify; text-indent:21pt; widows:0">
+                            <span
+                                style=" font-size:12pt">涓�銆佷弗鏍奸伒瀹堝浗瀹躲�佸競銆佸尯鏈夊叧鐜淇濇姢娉曞緥銆佹硶瑙勩�佽绔犮�佹爣鍑嗗拰鏀跨瓥瑙勫畾锛岀Н鏋佸饱琛岀幆澧冧繚鎶ょぞ浼氳矗浠汇��</span>
+                        </p>
+                        <p
+                            style="line-height:20pt; margin:0pt 0pt 10pt; orphans:0; text-align:justify; text-indent:21pt; widows:0">
+                            <span style=" font-size:12pt">浜屻��</span><span
+                                style=" font-size:12pt">浠�</span><span
+                                style=" font-size:12pt">銆婁笂娴峰競鐜淇濇姢鏉′緥銆�</span><span
+                                style=" font-size:12pt">銆�</span><span
+                                style=" font-size:12pt">銆婁笂娴峰競澶ф皵姹℃煋闃叉不鏉′緥銆�</span><span
+                                style=" font-size:12pt">銆�</span><span
+                                style=" font-size:12pt">銆婁笂娴峰競寤鸿宸ョ▼鏂囨槑鏂藉伐绠$悊瑙勫畾銆�</span><span
+                                style=" font-size:12pt">绛夎姹備负渚濇嵁锛岀瀛﹀埗瀹氬缓璁惧伐鍦版壃灏樻薄鏌撻槻娌绘柟妗堝苟鍏ず锛屽缓绔嬪仴鍏ㄤ紒涓氬唴閮ㄦ壃灏橀槻娌绘牳鏌ユ満鍒讹紝瀹夋帓涓撲汉璐熻矗鎵皹闃叉不浜嬪疁锛屽強鏃惰褰曘�佷繚瀛樿溅杈嗚繘鍑恒�佸啿娲椼�佹磼姘寸瓑鐜繚鍙拌处</span><span
+                                style=" font-size:12pt">銆�</span>
+                        </p>
+                        <p
+                            style="line-height:20pt; margin:0pt 0pt 10pt; orphans:0; text-align:justify; text-indent:21pt; widows:0">
+                            <span style=" font-size:12pt">涓夈��</span><span
+                                style=" font-size:12pt">寤鸿鏂藉伐搴旂鍚�</span><span
+                                style=" font-size:12pt">銆�</span><span
+                                style=" font-size:12pt">鏂囨槑鏂藉伐</span><span
+                                style=" font-size:12pt">鏍囧噯銆嬶紙</span><span
+                                style=" font-size:12pt">DG/TJ 08-2102-2019 )</span><span
+                                style=" font-size:12pt">锛�</span><span
+                                style=" font-size:12pt">绉戝閰嶇疆鎵皹闃叉不璁炬柦璁惧锛堥珮鍘嬪啿娲楄澶囥�佽嚜鍔ㄥ柗娣嬭缃�侀浘鐐溅銆佹磼姘磋溅绛夛級锛屼緷鎵樻妧闃叉帾鏂藉紑灞曠豢鑹叉柦宸ワ紝骞跺姞寮哄鍣0鎺у埗銆佸厜姹℃煋鎺у埗銆佸己鑵愯殌鎬у寲瀛﹀搧绛夊叾浠栨薄鏌撴帶鍒讹紝</span><span
+                                style=" font-size:12pt">闃叉瀵瑰懆杈瑰眳姘戦�犳垚鐢熸椿鐜姹℃煋銆�</span>
+                        </p>
+                        <p
+                            style="line-height:20pt; margin:0pt 0pt 10pt; orphans:0; text-align:justify; text-indent:21pt; widows:0">
+                            <span style=" font-size:12pt">鍥涖�佷弗鏍兼墽琛�</span><span
+                                style=" font-size:12pt">鎵皹娌荤悊鍏釜鐧惧垎鐧�</span><span
+                                style=" font-size:12pt">瑕佹眰</span><span
+                                style=" font-size:12pt">锛�</span><span
+                                style=" font-size:12pt">1銆佹柦宸ュ伐鍦板懆杈�100%鍥存尅</span><span
+                                style=" font-size:12pt">锛�</span><span
+                                style=" font-size:12pt">2銆佸嚭鍏ヨ溅杈�100%鍐叉礂</span><span
+                                style=" font-size:12pt">锛�</span><span
+                                style=" font-size:12pt">3銆佹媶杩佸伐鍦�100%婀挎硶浣滀笟</span><span
+                                style=" font-size:12pt">锛�</span><span
+                                style=" font-size:12pt">4銆佹福鍦熻溅杈�100%瀵嗛棴杩愯緭</span><span
+                                style=" font-size:12pt">锛�</span><span
+                                style=" font-size:12pt">5銆佹柦宸ョ幇鍦哄湴闈�100%纭寲</span><span
+                                style=" font-size:12pt">锛�</span><span
+                                style=" font-size:12pt">6銆佺墿鏂欏爢鏀�100%瑕嗙洊</span><span
+                                style=" font-size:12pt">銆�</span>
+                        </p>
+                        <p
+                            style="line-height:20pt; margin:0pt 0pt 10pt; orphans:0; text-align:justify; text-indent:21pt; widows:0">
+                            <span style=" font-size:12pt">浜�</span><span
+                                style=" font-size:12pt">銆�</span><span
+                                style=" font-size:12pt">閬靛畧鍏充簬鍗板彂銆婁笂娴峰競鎴垮眿寤虹瓚宸ュ湴鎵皹姹℃煋闃叉不宸ヤ綔鏂规銆嬬殑閫氱煡 锛堟勃寤鸿川瀹夎仈銆�2019銆�208 鍙�
+                                锛夌浉鍏宠瀹氾紝</span><span style=" font-size:12pt">瀹夎甯備綇鎴垮煄涔″缓璁剧鐞嗗鍜屽競鐢熸�佺幆澧冨眬瀹樻柟</span>
+                        </p>
+                        <p style="line-height:20pt; margin:0pt 0pt 10pt; orphans:0; text-align:justify; widows:0"><span
+                                style=" font-size:12pt">缃戠珯鍏ず鍏憡鏍忎腑</span><span
+                                style=" font-size:12pt">鏈�鏂�</span><span
+                                style=" font-size:12pt">鍏竷鐨�</span><span
+                                style=" font-size:12pt">鍚堟牸渚涘簲鍟嗘彁渚涚殑鎵皹鍦ㄧ嚎鐩戞祴璁惧锛岄』绗﹀悎</span><span
+                                style=" font-size:12pt">銆�</span><span
+                                style=" font-size:12pt">涓婃捣甯傚缓绛戞柦宸�</span><span
+                                style=" font-size:12pt">棰楃矑鐗�</span><span
+                                style=" font-size:12pt">涓庡櫔澹�</span><span
+                                style=" font-size:12pt">鍦ㄧ嚎鐩戞祴鎶�鏈鑼冦��</span><span
+                                style=" font-size:12pt">锛�</span><span
+                                style=" font-size:12pt">濮旀墭瑙勮寖鏈嶅姟鍗曚綅瀹氭湡杩愮淮锛屽強鏃惰褰曠浉鍏冲彴璐︼紝纭繚鍏舵甯镐娇鐢�</span><span
+                                style=" font-size:12pt">锛�</span><span
+                                style=" font-size:12pt">璁惧鎷嗛櫎銆佺Щ鍔ㄦ垨鍋滆繍椤绘彁鍓嶅悜涓荤閮ㄩ棬鐢宠鎴栧妗堛��</span></p>
+                        <p
+                            style="line-height:20pt; margin:0pt 0pt 10pt; orphans:0; text-align:justify; text-indent:21pt; widows:0">
+                            <span style=" font-size:12pt">鍏�佹壃灏樺湪绾跨洃娴嬭澶囧畨瑁呭悗椤荤‘淇濈ǔ瀹氳繍琛岋紝骞�</span><span
+                                style=" font-size:12pt">鍙婃椂涓庣敓鎬佺幆澧冮儴闂ㄦ补鐑熺洃鎺х郴缁熻仈缃戯紝</span><span
+                                style=" font-size:12pt">渚濇嵁</span><span
+                                style=" font-size:12pt">銆�</span><span
+                                style=" font-size:12pt">涓婃捣甯傛壃灏樺湪绾跨洃娴嬫暟鎹墽娉曞簲鐢ㄨ瀹�</span><span
+                                style=" font-size:12pt">銆�</span><span
+                                style=" font-size:12pt">瀹氭湡瀹℃牳鐩戞祴鏁版嵁</span><span
+                                style=" font-size:12pt">锛屼笉瓒呮爣鎺掓斁</span><span
+                                style=" font-size:12pt">锛涙壃灏樼洃娴嬫暟鎹潥鍐充笉寮勮櫄浣滃亣锛屼笉瑙︾姱</span><span
+                                style=" font-size:12pt">銆�</span><span
+                                style=" font-size:12pt">鐜鐩戞祴鏁版嵁寮勮櫄浣滃亣琛屼负鍒ゅ畾鍙婂鐞嗗姙娉�</span><span
+                                style=" font-size:12pt">銆�</span><span
+                                style=" font-size:12pt">銆�</span>
+                        </p>
+                        <p
+                            style="line-height:20pt; margin:0pt 0pt 10pt; orphans:0; text-align:justify; text-indent:21pt; widows:0">
+                            <span style=" font-size:12pt">涓冦�佷笉浣跨敤鏈笂鐜繚鎷嶇収鐨勯潪閬撹矾鏈烘锛屼笉浣跨敤闈炴硶娓犻亾鎴栦笉杈炬爣鏌存补</span><span
+                                style=" font-size:12pt">銆�</span>
+                        </p>
+                        <p
+                            style="line-height:20pt; margin:0pt 0pt 10pt; orphans:0; text-align:justify; text-indent:21pt; widows:0">
+                            <span style=" font-size:12pt">鍏�</span><span
+                                style=" font-size:12pt">銆佸悓鎰忔湰鎵胯鍚戠ぞ浼氬叕寮�锛屽苟鑷鎺ュ彈鏀垮簻銆佽涓氱粍缁囥�佷富绠¢儴闂ㄥ鎵樼涓夋柟鐩戠鍗曚綅銆佺ぞ浼氬叕浼椼�佹柊闂昏垎璁虹殑鐩戠潱銆�</span>
+                        </p>
+                        <p
+                            style="line-height:20pt; margin:0pt 0pt 10pt; orphans:0; text-align:justify; text-indent:21pt; widows:0">
+                            <span style=" font-size:12pt">&#xa0;</span>
+                        </p>
+                        <p
+                            style="line-height:20pt; margin:0pt 0pt 10pt; orphans:0; text-align:justify; text-indent:26.25pt; widows:0">
+                            <span style=" font-size:12pt">娉曚汉</span><span
+                                style=" font-size:12pt">浠h〃鎴栬矗</span><span
+                                style=" font-size:12pt">浠讳汉锛堢瀛楋級锛毬�${Sign}聽聽聽聽 鍗曚綅锛堢洊绔狅級 ${Seal}</span>
+                        </p>
+                        <br /><br /><br /><br />
+                        <p
+                            style="line-height:20pt; margin:0pt 0pt 10pt; orphans:0; text-align:right; text-indent:28.5pt; widows:0">
+                            <span style=" font-size:12pt">${Year}骞绰�${Month} 鏈埪�${Day} 鏃�</span>
+                        </p>
+                    </td>
+                </tr>
+                <tr style="height:0pt">
+                    <td style="width:42.3pt; border:none"></td>
+                    <td style="width:75.35pt; border:none"></td>
+                    <td style="width:144.35pt; border:none"></td>
+                    <td style="width:108.6pt; border:none"></td>
+                    <td style="width:130.35pt; border:none"></td>
+                </tr>
+            </table>
+        </div>
+        <p style="font-size:10.5pt; line-height:115%; margin:0pt 0pt 10pt; orphans:0; text-align:justify; widows:0">
+            <span style=" font-size:10.5pt">&#xa0;</span>
+        </p>
+    </div>
+</body>
+
+</html>
\ No newline at end of file
diff --git a/src/main/resources/templates/pdfDemo5.docx b/src/main/resources/templates/pdfDemo5.docx
new file mode 100644
index 0000000..2a41181
--- /dev/null
+++ b/src/main/resources/templates/pdfDemo5.docx
Binary files differ
diff --git a/src/main/resources/templates/temporary.html b/src/main/resources/templates/temporary.html
new file mode 100644
index 0000000..1d306e0
--- /dev/null
+++ b/src/main/resources/templates/temporary.html
@@ -0,0 +1,280 @@
+锘�<html>
+
+<head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    <meta http-equiv="Content-Style-Type" content="text/css" />
+    <meta name="generator" content="Aspose.Words for .NET 15.1.0.0" />
+    <title></title>
+</head>
+
+<body>
+    <div>
+        <p style="font-size:18pt; line-height:115%; margin:0pt 0pt 10pt; orphans:0; text-align:center; widows:0">
+            <!-- <span style=" font-size:18pt; font-weight:bold">涓婃捣甯�</span>
+            <span style=" font-size:18pt; font-weight:bold">寰愭眹鍖�</span> -->
+            <span style=" font-size:18pt; font-weight:bold">寤鸿宸ュ湴</span>
+            <span style=" font-size:18pt; font-weight:bold">鐜淇$敤鎵胯涔�</span>
+        </p>
+        <div style="text-align:center">
+            <table cellspacing="0" cellpadding="0" style="border-collapse:collapse; margin:0 auto; width:501.7pt">
+                <tr style="height:24.6pt">
+                    <td colspan="2"
+                        style="border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:106.85pt">
+                        <p
+                            style="font-size:12pt; line-height:115%; margin:0pt 0pt 10pt; orphans:0; text-align:center; widows:0">
+                            <span style=" font-size:12pt">鏂藉伐</span><span
+                                style=" font-size:12pt">鍗曚綅鍚嶇О</span>
+                        </p>
+                    </td>
+                    <td colspan="3"
+                        style="border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.4pt; padding-right:5.03pt; vertical-align:middle; width:372.5pt">
+                        <p
+                            style="font-size:12pt; line-height:115%; margin:0pt 0pt 10pt; orphans:0; text-align:center; widows:0">
+                            <span style=" font-size:12pt">鏌愭煇浼佷笟</span>
+                        </p>
+                    </td>
+                </tr>
+                <tr style="height:25.75pt">
+                    <td colspan="2"
+                        style="border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:106.85pt">
+                        <p
+                            style="font-size:12pt; line-height:115%; margin:0pt 0pt 10pt; orphans:0; text-align:center; widows:0">
+                            <span style=" font-size:12pt">缁熶竴绀句細淇$敤浠g爜</span>
+                        </p>
+                    </td>
+                    <td
+                        style="border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.4pt; padding-right:5.03pt; vertical-align:middle; width:133.55pt">
+                        <p
+                            style="font-size:12pt; line-height:115%; margin:0pt 0pt 10pt; orphans:0; text-align:center; widows:0">
+                            <span style=" font-size:12pt">9283987983179</span>
+                        </p>
+                    </td>
+                    <td
+                        style="border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.4pt; padding-right:5.03pt; vertical-align:middle; width:97.8pt">
+                        <p
+                            style="font-size:12pt; line-height:115%; margin:0pt 0pt 10pt; orphans:0; text-align:center; widows:0">
+                            <span style=" font-size:12pt">宸ュ湴</span><span
+                                style=" font-size:12pt">鎶ュ缓鍙�</span>
+                        </p>
+                    </td>
+                    <td
+                        style="border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.4pt; padding-right:5.03pt; vertical-align:middle; width:119.55pt">
+                        <p
+                            style="font-size:12pt; line-height:115%; margin:0pt 0pt 10pt; orphans:0; text-align:center; widows:0">
+                            <span style=" font-size:12pt">13u981479835</span>
+                        </p>
+                    </td>
+                </tr>
+                <tr style="height:24.95pt">
+                    <td colspan="2"
+                        style="border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:106.85pt">
+                        <p
+                            style="font-size:12pt; line-height:115%; margin:0pt 0pt 10pt; orphans:0; text-align:center; widows:0">
+                            <span style=" font-size:12pt">娉曚汉</span><span
+                                style=" font-size:12pt">浠h〃</span><span
+                                style=" font-size:12pt">濮撳悕</span>
+                        </p>
+                    </td>
+                    <td
+                        style="border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.4pt; padding-right:5.03pt; vertical-align:middle; width:133.55pt">
+                        <p
+                            style="font-size:12pt; line-height:115%; margin:0pt 0pt 10pt; orphans:0; text-align:center; widows:0">
+                            <span style=" font-size:12pt">鏌愭煇鏌�</span>
+                        </p>
+                    </td>
+                    <td
+                        style="border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.4pt; padding-right:5.03pt; vertical-align:middle; width:97.8pt">
+                        <p
+                            style="font-size:12pt; line-height:115%; margin:0pt 0pt 10pt; orphans:0; text-align:center; widows:0">
+                            <span style=" font-size:12pt">娉曚汉</span><span
+                                style=" font-size:12pt">浠h〃</span><span
+                                style=" font-size:12pt">韬唤璇佸彿</span>
+                        </p>
+                    </td>
+                    <td
+                        style="border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.4pt; padding-right:5.03pt; vertical-align:middle; width:119.55pt">
+                        <p
+                            style="font-size:12pt; line-height:115%; margin:0pt 0pt 10pt; orphans:0; text-align:center; widows:0">
+                            <span style=" font-size:12pt">12314876128736128736</span>
+                        </p>
+                    </td>
+                </tr>
+                <tr style="height:42.7pt">
+                    <td colspan="2"
+                        style="border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:106.85pt">
+                        <p style="line-height:20pt; margin:0pt 0pt 10pt; orphans:0; text-align:center; widows:0"><span
+                                style=" font-size:12pt">鐜淇$敤鎵胯绫诲瀷</span></p>
+                    </td>
+                    <td colspan="3"
+                        style="border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.4pt; padding-right:5.03pt; vertical-align:middle; width:372.5pt">
+                        <p style="line-height:20pt; margin:0pt 0pt 10pt; orphans:0; text-align:justify; widows:0"><span
+                                style=" font-size:12pt">鈻$幆淇濅富浣撹矗浠绘壙璇猴紱鈻$幆澧冭鏀胯鍙簨椤癸紱聽 </span></p>
+                        <p style="line-height:20pt; margin:0pt 0pt 10pt; orphans:0; text-align:justify; widows:0"><span
+                                style=" font-size:12pt">鈻$幆淇濅笓椤硅祫閲戞垨鍏朵粬璧勯噾琛ュ姪锛涒枴鍏朵粬鐜繚鐢虫姤浜嬮」</span></p>
+                    </td>
+                </tr>
+                <tr style="height:88.5pt">
+                    <td
+                        style="border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-left-color:#000000; border-left-style:solid; border-left-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.03pt; padding-right:5.03pt; vertical-align:middle; width:31.5pt">
+                        <p
+                            style="font-size:14pt; line-height:115%; margin:0pt 0pt 10pt; orphans:0; text-align:center; widows:0">
+                            <span style=" font-size:14pt">鎵�</span>
+                        </p>
+                        <p
+                            style="font-size:14pt; line-height:115%; margin:0pt 0pt 10pt; orphans:0; text-align:center; widows:0">
+                            <span style=" font-size:14pt">璇�</span>
+                        </p>
+                        <p
+                            style="font-size:14pt; line-height:115%; margin:0pt 0pt 10pt; orphans:0; text-align:center; widows:0">
+                            <span style=" font-size:14pt">浜�</span>
+                        </p>
+                        <p
+                            style="font-size:14pt; line-height:115%; margin:0pt 0pt 10pt; orphans:0; text-align:center; widows:0">
+                            <span style=" font-size:14pt">椤�</span>
+                        </p>
+                    </td>
+                    <td colspan="4"
+                        style="border-bottom-color:#000000; border-bottom-style:solid; border-bottom-width:0.75pt; border-right-color:#000000; border-right-style:solid; border-right-width:0.75pt; border-top-color:#000000; border-top-style:solid; border-top-width:0.75pt; padding-left:5.4pt; padding-right:5.03pt; vertical-align:top; width:447.85pt">
+                        <p
+                            style="line-height:20pt; margin:0pt 0pt 10pt; orphans:0; text-align:justify; text-indent:21pt; widows:0">
+                            <span style=" font-size:12pt">涓鸿返琛岀豢鑹插彂灞曠悊蹇碉紝鍔姏钀ラ�犺瘹瀹炲畧淇$殑绀句細鐜锛岃惤瀹�</span><span
+                                style=" font-size:12pt">鏂藉伐</span><span
+                                style=" font-size:12pt">鍗曚綅鐜繚璐d换锛�</span><span
+                                style=" font-size:12pt">闄嶄綆鍥犵幆澧冪瓑鍥犵礌閫犳垚鐨�</span><span
+                                style=" font-size:12pt">鎵皹姹℃煋</span><span
+                                style=" font-size:12pt">闅愭偅鍜屽眳姘戠籂绾�</span><span
+                                style=" font-size:12pt">锛�</span><span
+                                style=" font-size:12pt">纭繚</span><span
+                                style=" font-size:12pt">寤虹瓚涓�</span><span
+                                style=" font-size:12pt">鍋ュ悍鏈夊簭鍙戝睍</span><span
+                                style=" font-size:12pt">锛�</span><span
+                                style=" font-size:12pt">鏈崟浣嶏紙鎴栨湰浜猴級鑷効浣滃嚭濡備笅鎵胯锛�</span>
+                        </p>
+                        <p
+                            style="line-height:20pt; margin:0pt 0pt 10pt; orphans:0; text-align:justify; text-indent:21pt; widows:0">
+                            <span
+                                style=" font-size:12pt">涓�銆佷弗鏍奸伒瀹堝浗瀹躲�佸競銆佸尯鏈夊叧鐜淇濇姢娉曞緥銆佹硶瑙勩�佽绔犮�佹爣鍑嗗拰鏀跨瓥瑙勫畾锛岀Н鏋佸饱琛岀幆澧冧繚鎶ょぞ浼氳矗浠汇��</span>
+                        </p>
+                        <p
+                            style="line-height:20pt; margin:0pt 0pt 10pt; orphans:0; text-align:justify; text-indent:21pt; widows:0">
+                            <span style=" font-size:12pt">浜屻��</span><span
+                                style=" font-size:12pt">浠�</span><span
+                                style=" font-size:12pt">銆婁笂娴峰競鐜淇濇姢鏉′緥銆�</span><span
+                                style=" font-size:12pt">銆�</span><span
+                                style=" font-size:12pt">銆婁笂娴峰競澶ф皵姹℃煋闃叉不鏉′緥銆�</span><span
+                                style=" font-size:12pt">銆�</span><span
+                                style=" font-size:12pt">銆婁笂娴峰競寤鸿宸ョ▼鏂囨槑鏂藉伐绠$悊瑙勫畾銆�</span><span
+                                style=" font-size:12pt">绛夎姹備负渚濇嵁锛岀瀛﹀埗瀹氬缓璁惧伐鍦版壃灏樻薄鏌撻槻娌绘柟妗堝苟鍏ず锛屽缓绔嬪仴鍏ㄤ紒涓氬唴閮ㄦ壃灏橀槻娌绘牳鏌ユ満鍒讹紝瀹夋帓涓撲汉璐熻矗鎵皹闃叉不浜嬪疁锛屽強鏃惰褰曘�佷繚瀛樿溅杈嗚繘鍑恒�佸啿娲椼�佹磼姘寸瓑鐜繚鍙拌处</span><span
+                                style=" font-size:12pt">銆�</span>
+                        </p>
+                        <p
+                            style="line-height:20pt; margin:0pt 0pt 10pt; orphans:0; text-align:justify; text-indent:21pt; widows:0">
+                            <span style=" font-size:12pt">涓夈��</span><span
+                                style=" font-size:12pt">寤鸿鏂藉伐搴旂鍚�</span><span
+                                style=" font-size:12pt">銆�</span><span
+                                style=" font-size:12pt">鏂囨槑鏂藉伐</span><span
+                                style=" font-size:12pt">鏍囧噯銆嬶紙</span><span
+                                style=" font-size:12pt">DG/TJ 08-2102-2019 )</span><span
+                                style=" font-size:12pt">锛�</span><span
+                                style=" font-size:12pt">绉戝閰嶇疆鎵皹闃叉不璁炬柦璁惧锛堥珮鍘嬪啿娲楄澶囥�佽嚜鍔ㄥ柗娣嬭缃�侀浘鐐溅銆佹磼姘磋溅绛夛級锛屼緷鎵樻妧闃叉帾鏂藉紑灞曠豢鑹叉柦宸ワ紝骞跺姞寮哄鍣0鎺у埗銆佸厜姹℃煋鎺у埗銆佸己鑵愯殌鎬у寲瀛﹀搧绛夊叾浠栨薄鏌撴帶鍒讹紝</span><span
+                                style=" font-size:12pt">闃叉瀵瑰懆杈瑰眳姘戦�犳垚鐢熸椿鐜姹℃煋銆�</span>
+                        </p>
+                        <p
+                            style="line-height:20pt; margin:0pt 0pt 10pt; orphans:0; text-align:justify; text-indent:21pt; widows:0">
+                            <span style=" font-size:12pt">鍥涖�佷弗鏍兼墽琛�</span><span
+                                style=" font-size:12pt">鎵皹娌荤悊鍏釜鐧惧垎鐧�</span><span
+                                style=" font-size:12pt">瑕佹眰</span><span
+                                style=" font-size:12pt">锛�</span><span
+                                style=" font-size:12pt">1銆佹柦宸ュ伐鍦板懆杈�100%鍥存尅</span><span
+                                style=" font-size:12pt">锛�</span><span
+                                style=" font-size:12pt">2銆佸嚭鍏ヨ溅杈�100%鍐叉礂</span><span
+                                style=" font-size:12pt">锛�</span><span
+                                style=" font-size:12pt">3銆佹媶杩佸伐鍦�100%婀挎硶浣滀笟</span><span
+                                style=" font-size:12pt">锛�</span><span
+                                style=" font-size:12pt">4銆佹福鍦熻溅杈�100%瀵嗛棴杩愯緭</span><span
+                                style=" font-size:12pt">锛�</span><span
+                                style=" font-size:12pt">5銆佹柦宸ョ幇鍦哄湴闈�100%纭寲</span><span
+                                style=" font-size:12pt">锛�</span><span
+                                style=" font-size:12pt">6銆佺墿鏂欏爢鏀�100%瑕嗙洊</span><span
+                                style=" font-size:12pt">銆�</span>
+                        </p>
+                        <p
+                            style="line-height:20pt; margin:0pt 0pt 10pt; orphans:0; text-align:justify; text-indent:21pt; widows:0">
+                            <span style=" font-size:12pt">浜�</span><span
+                                style=" font-size:12pt">銆�</span><span
+                                style=" font-size:12pt">閬靛畧鍏充簬鍗板彂銆婁笂娴峰競鎴垮眿寤虹瓚宸ュ湴鎵皹姹℃煋闃叉不宸ヤ綔鏂规銆嬬殑閫氱煡 锛堟勃寤鸿川瀹夎仈銆�2019銆�208 鍙�
+                                锛夌浉鍏宠瀹氾紝</span><span style=" font-size:12pt">瀹夎甯備綇鎴垮煄涔″缓璁剧鐞嗗鍜屽競鐢熸�佺幆澧冨眬瀹樻柟</span>
+                        </p>
+                        <p style="line-height:20pt; margin:0pt 0pt 10pt; orphans:0; text-align:justify; widows:0"><span
+                                style=" font-size:12pt">缃戠珯鍏ず鍏憡鏍忎腑</span><span
+                                style=" font-size:12pt">鏈�鏂�</span><span
+                                style=" font-size:12pt">鍏竷鐨�</span><span
+                                style=" font-size:12pt">鍚堟牸渚涘簲鍟嗘彁渚涚殑鎵皹鍦ㄧ嚎鐩戞祴璁惧锛岄』绗﹀悎</span><span
+                                style=" font-size:12pt">銆�</span><span
+                                style=" font-size:12pt">涓婃捣甯傚缓绛戞柦宸�</span><span
+                                style=" font-size:12pt">棰楃矑鐗�</span><span
+                                style=" font-size:12pt">涓庡櫔澹�</span><span
+                                style=" font-size:12pt">鍦ㄧ嚎鐩戞祴鎶�鏈鑼冦��</span><span
+                                style=" font-size:12pt">锛�</span><span
+                                style=" font-size:12pt">濮旀墭瑙勮寖鏈嶅姟鍗曚綅瀹氭湡杩愮淮锛屽強鏃惰褰曠浉鍏冲彴璐︼紝纭繚鍏舵甯镐娇鐢�</span><span
+                                style=" font-size:12pt">锛�</span><span
+                                style=" font-size:12pt">璁惧鎷嗛櫎銆佺Щ鍔ㄦ垨鍋滆繍椤绘彁鍓嶅悜涓荤閮ㄩ棬鐢宠鎴栧妗堛��</span></p>
+                        <p
+                            style="line-height:20pt; margin:0pt 0pt 10pt; orphans:0; text-align:justify; text-indent:21pt; widows:0">
+                            <span style=" font-size:12pt">鍏�佹壃灏樺湪绾跨洃娴嬭澶囧畨瑁呭悗椤荤‘淇濈ǔ瀹氳繍琛岋紝骞�</span><span
+                                style=" font-size:12pt">鍙婃椂涓庣敓鎬佺幆澧冮儴闂ㄦ补鐑熺洃鎺х郴缁熻仈缃戯紝</span><span
+                                style=" font-size:12pt">渚濇嵁</span><span
+                                style=" font-size:12pt">銆�</span><span
+                                style=" font-size:12pt">涓婃捣甯傛壃灏樺湪绾跨洃娴嬫暟鎹墽娉曞簲鐢ㄨ瀹�</span><span
+                                style=" font-size:12pt">銆�</span><span
+                                style=" font-size:12pt">瀹氭湡瀹℃牳鐩戞祴鏁版嵁</span><span
+                                style=" font-size:12pt">锛屼笉瓒呮爣鎺掓斁</span><span
+                                style=" font-size:12pt">锛涙壃灏樼洃娴嬫暟鎹潥鍐充笉寮勮櫄浣滃亣锛屼笉瑙︾姱</span><span
+                                style=" font-size:12pt">銆�</span><span
+                                style=" font-size:12pt">鐜鐩戞祴鏁版嵁寮勮櫄浣滃亣琛屼负鍒ゅ畾鍙婂鐞嗗姙娉�</span><span
+                                style=" font-size:12pt">銆�</span><span
+                                style=" font-size:12pt">銆�</span>
+                        </p>
+                        <p
+                            style="line-height:20pt; margin:0pt 0pt 10pt; orphans:0; text-align:justify; text-indent:21pt; widows:0">
+                            <span style=" font-size:12pt">涓冦�佷笉浣跨敤鏈笂鐜繚鎷嶇収鐨勯潪閬撹矾鏈烘锛屼笉浣跨敤闈炴硶娓犻亾鎴栦笉杈炬爣鏌存补</span><span
+                                style=" font-size:12pt">銆�</span>
+                        </p>
+                        <p
+                            style="line-height:20pt; margin:0pt 0pt 10pt; orphans:0; text-align:justify; text-indent:21pt; widows:0">
+                            <span style=" font-size:12pt">鍏�</span><span
+                                style=" font-size:12pt">銆佸悓鎰忔湰鎵胯鍚戠ぞ浼氬叕寮�锛屽苟鑷鎺ュ彈鏀垮簻銆佽涓氱粍缁囥�佷富绠¢儴闂ㄥ鎵樼涓夋柟鐩戠鍗曚綅銆佺ぞ浼氬叕浼椼�佹柊闂昏垎璁虹殑鐩戠潱銆�</span>
+                        </p>
+                        <p
+                            style="line-height:20pt; margin:0pt 0pt 10pt; orphans:0; text-align:justify; text-indent:21pt; widows:0">
+                            <span style=" font-size:12pt">&#xa0;</span>
+                        </p>
+                        <p
+                            style="line-height:20pt; margin:0pt 0pt 10pt; orphans:0; text-align:justify; text-indent:26.25pt; widows:0">
+                            <span style=" font-size:12pt">娉曚汉</span><span
+                                style=" font-size:12pt">浠h〃鎴栬矗</span><span
+                                style=" font-size:12pt">浠讳汉锛堢瀛楋級锛毬犵鍚嵚犅犅犅� 鍗曚綅锛堢洊绔狅級 鐩栫珷</span>
+                        </p>
+                        <br /><br /><br /><br />
+                        <p
+                            style="line-height:20pt; margin:0pt 0pt 10pt; orphans:0; text-align:right; text-indent:28.5pt; widows:0">
+                            <span style=" font-size:12pt">2022骞绰�06 鏈埪�29 鏃�</span>
+                        </p>
+                    </td>
+                </tr>
+                <tr style="height:0pt">
+                    <td style="width:42.3pt; border:none"></td>
+                    <td style="width:75.35pt; border:none"></td>
+                    <td style="width:144.35pt; border:none"></td>
+                    <td style="width:108.6pt; border:none"></td>
+                    <td style="width:130.35pt; border:none"></td>
+                </tr>
+            </table>
+        </div>
+        <p style="font-size:10.5pt; line-height:115%; margin:0pt 0pt 10pt; orphans:0; text-align:justify; widows:0">
+            <span style=" font-size:10.5pt">&#xa0;</span>
+        </p>
+    </div>
+</body>
+
+</html>
\ No newline at end of file
diff --git a/src/test/kotlin/cn/flightfeather/supervision/lightshare/service/Impl/CommitmentServiceImplTest.kt b/src/test/kotlin/cn/flightfeather/supervision/lightshare/service/Impl/CommitmentServiceImplTest.kt
new file mode 100644
index 0000000..5806ae1
--- /dev/null
+++ b/src/test/kotlin/cn/flightfeather/supervision/lightshare/service/Impl/CommitmentServiceImplTest.kt
@@ -0,0 +1,40 @@
+package cn.flightfeather.supervision.lightshare.service.Impl
+
+import cn.flightfeather.supervision.lightshare.service.CommitmentService
+import org.junit.Test
+import org.junit.jupiter.api.extension.ExtendWith
+import org.junit.runner.RunWith
+import org.springframework.beans.factory.annotation.Autowired
+import org.springframework.boot.test.context.SpringBootTest
+import org.springframework.test.context.junit.jupiter.SpringExtension
+import org.springframework.test.context.junit4.SpringRunner
+
+@RunWith(SpringRunner::class)
+@ExtendWith(SpringExtension::class)
+@SpringBootTest
+class CommitmentServiceImplTest {
+
+    @Autowired
+    lateinit var commitmentService: CommitmentService
+
+    @Test
+    fun createLetterOfCommitment() {
+        val r = commitmentService.createLetterOfCommitment("", mutableMapOf<String, Any>().apply {
+            put("Department", "鏌愭煇浼佷笟")
+            put("SocialCode", "9283987983179")
+            put("ConstructionNo", "13u981479835")
+            put("JuridicalPerson", "鏌愭煇鏌�")
+            put("IdNo", "12314876128736128736")
+            put("Type1", "鈻�")
+            put("Type2", "鈻�")
+            put("Type3", "鈻�")
+            put("Type4", "鈻�")
+            put("Sign", "绛惧悕")
+            put("Seal", "鐩栫珷")
+            put("Year", "2022")
+            put("Month", "06")
+            put("Day", "29")
+        })
+        println(r)
+    }
+}
\ No newline at end of file

--
Gitblit v1.9.3