NPOI操作插入图片问题,使用签名模析在同一个XWPFRun

因为插入签名等图片,必须使用在同一个XWPFRun 所有需要手动重新组织文件源代码XML

方法:

1. 把改好的模析文件复制出来(为防止意外,不要直接操作原模板文件),把后缀名改为zip,使用压缩软件解压到同一个文件夹。

2. 打开解压后的文件..\word\document.xml

这里推荐使用VScode,方便对xml文档进行格式化。
vscode安装XML tool这个插件

打开之后,Alt+shift+F 对xml格式化
格式化之后应该是这样的:

3. 找到要修改部分。例如下图


<w:t>$iStatus_30_1_a$同意离职,$iStatus_30_1_b$不同意离职 签字及日期:$cSign30_1$ $dDate30_1$</w:t>

按照NPIOI的要求,$cSign30_1$ 必须是独立成为一个XWPFRun,才可以把图片插入到这个位置。
所以上面是不符合要求的。那我们可以手动编辑这个文件。使用文件达到要求。
编辑方法,先把

                        <w:r>
                          <w:rPr>
                              <w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:eastAsia="宋体" w:cs="宋体"/>
                              <w:i w:val="0"/>
                              <w:iCs w:val="0"/>
                              <w:color w:val="000000"/>
                              <w:kern w:val="0"/>
                              <w:sz w:val="24"/>
                              <w:szCs w:val="24"/>
                              <w:u w:val="none"/>
                              <w:lang w:val="en-US" w:eastAsia="zh-CN" w:bidi="ar"/>
                          </w:rPr>
                          <w:t>$iStatus_30_1_a$同意离职,$iStatus_30_1_b$不同意离职   签字及日期:$cSign30_1$ $dDate30_1$</w:t>
                      </w:r>

这复制几份,然后把相关重复的内容删除。
完成后像这样

                        <w:r>
                          <w:rPr>
                              <w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:eastAsia="宋体" w:cs="宋体"/>
                              <w:i w:val="0"/>
                              <w:iCs w:val="0"/>
                              <w:color w:val="000000"/>
                              <w:kern w:val="0"/>
                              <w:sz w:val="24"/>
                              <w:szCs w:val="24"/>
                              <w:u w:val="none"/>
                              <w:lang w:val="en-US" w:eastAsia="zh-CN" w:bidi="ar"/>
                          </w:rPr>
                          <w:t>$iStatus_30_1_a$同意离职,$iStatus_30_1_b$不同意离职   签字及日期:</w:t>
                      </w:r>
                      <w:r>
                          <w:rPr>
                              <w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:eastAsia="宋体" w:cs="宋体"/>
                              <w:i w:val="0"/>
                              <w:iCs w:val="0"/>
                              <w:color w:val="000000"/>
                              <w:kern w:val="0"/>
                              <w:sz w:val="24"/>
                              <w:szCs w:val="24"/>
                              <w:u w:val="none"/>
                              <w:lang w:val="en-US" w:eastAsia="zh-CN" w:bidi="ar"/>
                          </w:rPr>
                          <w:t>$cSign30_1$</w:t>
                      </w:r>
                      <w:r>
                          <w:rPr>
                              <w:rFonts w:hint="eastAsia" w:ascii="宋体" w:hAnsi="宋体" w:eastAsia="宋体" w:cs="宋体"/>
                              <w:i w:val="0"/>
                              <w:iCs w:val="0"/>
                              <w:color w:val="000000"/>
                              <w:kern w:val="0"/>
                              <w:sz w:val="24"/>
                              <w:szCs w:val="24"/>
                              <w:u w:val="none"/>
                              <w:lang w:val="en-US" w:eastAsia="zh-CN" w:bidi="ar"/>
                          </w:rPr>
                          <w:t>  $dDate30_1$</w:t>
                      </w:r>

最后保存文件。

4. 然后把文件重新打包成zip格式,打文件名后缀改成docx

注意打包的时候,需要把文件夹打包到根目录。参考下图。

posted @ 2022-05-03 11:05  清风笑  阅读(373)  评论(0编辑  收藏  举报