表单绘制生成docx

推荐使用poi-tl中文文档地址
代码如下(表格行循环)

   public static void main(String[] args) throws IOException {LoopRowTableRenderPolicy policy = new LoopRowTableRenderPolicy();Configure config = Configure.builder().bind("drugs", policy).build();List<Drug> goods = new ArrayList<>();for (int i = 0; i < 5; i++) {Drug good = new Drug();good.setDrugName("药品111111111111111111111111111111111111111111111111111111111111111111111111111111111111"+i);good.setCount(i);good.setRouteName("口服"+i);goods.add(good);}XWPFTemplate template = XWPFTemplate.compile("src/main/resources/template.docx", config).render(new HashMap<String, Object>() {{put("drugs", goods);put("dept", "张三111111111111111111111111111111111111111111111111111111111111111111");put("sex", "男");put("approvalTime3", "2022-10-11 12:00:00");}});template.writeAndClose(new FileOutputStream("output.docx"));}

docx表单转pdf

推荐使用poi
这里主要涉及到依赖问题,我看到很多网上资料还是报错,最后在gitee里面找到一个pom导了进来,解决了这个问题,在这里非常感谢小民哥gitee地址

下面是我的pom依赖,亲测没有问题,可以转成pdf

  <dependency><groupId>com.deepoove</groupId><artifactId>poi-tl</artifactId><version>1.12.0</version></dependency><!--poi--><dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>5.2.2</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>5.2.2</version></dependency><!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml-full --><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml-full</artifactId><version>5.2.2</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-scratchpad</artifactId><version>5.2.2</version></dependency><!--docx 转pdf--><dependency><groupId>org.apache.pdfbox</groupId><artifactId>pdfbox</artifactId><version>2.0.25</version></dependency><dependency><groupId>fr.opensagres.xdocreport</groupId><artifactId>xdocreport</artifactId><version>2.0.3</version></dependency><dependency><groupId>fr.opensagres.xdocreport</groupId><artifactId>org.apache.poi.xwpf.converter.xhtml</artifactId><version>1.0.6</version></dependency><dependency><groupId>fr.opensagres.xdocreport</groupId><artifactId>fr.opensagres.xdocreport.document</artifactId><version>2.0.2</version></dependency><dependency><groupId>fr.opensagres.xdocreport</groupId><artifactId>org.apache.poi.xwpf.converter.core</artifactId><version>1.0.6</version><exclusions><exclusion><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId></exclusion><exclusion><groupId>org.apache.poi</groupId><artifactId>ooxml-schemas</artifactId></exclusion></exclusions></dependency><dependency><groupId>fr.opensagres.xdocreport</groupId><artifactId>org.apache.poi.xwpf.converter.pdf</artifactId><version>1.0.6</version></dependency>

转pdf 代码

public static void main(String[] args) throws IOException {LoopRowTableRenderPolicy policy = new LoopRowTableRenderPolicy();Configure config = Configure.builder().bind("drugs", policy).build();List<Drug> goods = new ArrayList<>();for (int i = 0; i < 5; i++) {Drug good = new Drug();good.setDrugName("药品111111111111111111111111111111111111111111111111111111111111111111111111111111111111"+i);good.setCount(i);good.setRouteName("口服"+i);goods.add(good);}XWPFTemplate template = XWPFTemplate.compile("src/main/resources/template.docx", config).render(new HashMap<String, Object>() {{put("drugs", goods);put("dept", "张三111111111111111111111111111111111111111111111111111111111111111111");put("sex", "男");put("approvalTime3", "2022-10-11 12:00:00");}});PdfOptions options = PdfOptions.create();try (OutputStream outPDF = Files.newOutputStream(Paths.get("output.pdf"))) {PdfConverter.getInstance().convert(template.getXWPFDocument(), outPDF, options);} catch (IOException e) {e.printStackTrace();}}

常见问题

加了这些依赖项目里面还是运行报错

这个应该是你项目里还有easy-excel依赖的问题,所以你应该排除掉easy-excel依赖中的poi依赖
就像这样

<dependency><groupId>含有easyexcel依赖的项目</groupId><artifactId></artifactId><version></version><exclusions><exclusion><artifactId>poi-ooxml-schemas</artifactId><groupId>org.apache.poi</groupId></exclusion></exclusions></dependency>

推荐一个插件maven-helper,安装之后,当你打开pom文件会在下面增加一个小图标,点击dependency analyzer 可以找出你项目里哪些依赖含有easyexcel

linux 上的docker项目遇到pdf中文不显示

这个是因为linux上的docker容器可能没有(docx里面的字体例如宋体或者黑体)
可以进入你的项目容器下检查一下

  1. docker exec -it 容器id前四位 sh
  2. fc-list 展示容器有哪些字体
  3. 将你windows的字体复制到容器中去 可以在/user/share/fonts/ 下面建一个文件夹chines 将你的windows字体拷贝过去
  4. windows字体在这里 5. 拷贝过去之后再次执行fc-list 应该会出现你拷贝进去的字体,如果出现拷贝进去的字帖,docker 重启你的那个项目,然后就没问题了

docker 镜像需要字体

将字体拷贝至跟dockerfile同一文件目录下,然后再dockerfile中增加两句
COPY sunhei.ttf /usr/share/fonts/chinese/sunhei.ttf
COPY simsun.ttc /usr/share/fonts/chinese/simsun.ttc
以上两个一个是黑体一个是宋体

poi-tl生成表单并转成pdf(Linux服务器)相关推荐

  1. 多款顶级好用的 Vue 表单设计器测评推荐,可拖拽生成表单

    本文完整版:<多款顶级好用的 Vue 表单设计器测评推荐,可拖拽生成表单> Vue 表单设计器 form-generator - 适配 Element Plus UI 框架的表单设计器 f ...

  2. 没有form的表单验证_PHP动态生成表单,内置17种常用组件并且支持表单验证!

    FormBuilder 是一个开源的PHP表单生成器,可以快速生成现代化的form表单.还可以配合开源项目 xaboy/form-create 生成任何 Vue 组件 github | 文档 环境需求 ...

  3. vue动态生成表单元素基础篇

    这里讲解一个vue生成表单的简单实例: (图一) (图二) (图三) 如上图所示: 图一: 空的输入框的情况 图二: 点击 "+" 添加生成表单的情况 图三: 表单中可以输入值,并 ...

  4. vue动态生成表单元素

    前几天接了一个需求,需要动态生成一个表单数据,然后提交,提交完数据后.通过编辑按钮进入时,需要进行数据回填. 一.页面展示: I. 没生成表单前的状态 Vue-UEedit UEedit II. 单机 ...

  5. javascript --- [FormData的使用] 表单元素转换成表单 对象二进制文件上传

    1. FormData的作用 1.1 将Form表单元素,转换成表单对象 在使用Ajax进行表单提交的时候,采用原生的js获取dom,然后添加属性.当表单项很多的时候,代码会很多.不利于后期阅读.维护 ...

  6. nc65右键生成菜单_DbSchema生成表单和报表,原来如此简单

    DbSchema 8 for Mac是mac上一款非常实用的商业数据库ER图绘制软件,可以轻松的对文档进行注释或标注,而且Dbschema集成了SQL和数据工具,能生成直观的图表.PDF文件或HTML ...

  7. java自定义表单_JSP实现用于自动生成表单标签html代码的自定义表单标签

    本文实例讲述了JSP实现用于自动生成表单标签HTML代码的自定义表单标签.分享给大家供大家参考.具体如下: 这个是自己写的一个简单的JSP表单标签,用于自动生成checkBox,select,radi ...

  8. 表单在线生成 html代码,JSP实现用于自动生成表单标签html代码的自定义表单标签...

    本文实例讲述了JSP实现用于自动生成表单标签html代码的自定义表单标签.分享给大家供大家参考.具体如下: 这个是自己写的一个简单的JSP表单标签,用于自动生成checkbox,select,radi ...

  9. vue 根据字符串生成表单_vue自定义表单生成器,可根据json参数动态生成表单

    介绍 form-create 是一个可以通过 JSON 生成具有动态渲染.数据收集.验证和提交功能的表单生成器.并且支持生成任何 Vue 组件.结合内置17种常用表单组件和自定义组件,再复杂的表单都可 ...

最新文章

  1. 网站基于vs,复选框,单选款
  2. 中国最大的python社区-在python数据框中的每一行中查找最大值
  3. 安卓手机浏览器排行_安卓手机双11性价比排行发布|拯救者手机发透明版|小米发大光圈手机镜头...
  4. 原生js实现给指定元素的后面追加内容
  5. 简单讲述一下Intent的传值过程
  6. 每日算法系列【LeetCode 714】买卖股票的最佳时机含手续费
  7. MySQL 如何删除有外键约束的表数据
  8. charles使用合集
  9. 拓扑排序 java_[Java]聊聊拓扑排序算法
  10. m3u8格式视屏播放
  11. 统计不及格人数(PTA-武理-C实验)
  12. 安卓神器-kiwi browser
  13. iphone避坑指南
  14. 【DG】DG环境的日常巡检
  15. 注册服务号、订阅号流程
  16. python生成条形码(不限制长度)
  17. css+html创建一个大风车
  18. 蓝牙怎么区分单模和双模_蓝牙中的单模、双模是什么,它们有何不同
  19. 2. Fortran的Hello world-开始Fortran的编程
  20. 自然场景OCR检测(YOLOv3+CRNN)

热门文章

  1. scala的传名参数和传值参数
  2. Action 中获取表单数据的三种方式
  3. 独享云虚拟主机、共享云,云服务器 ECS 区别
  4. 数字图像处理-编程实现染色体计数 C语言实现
  5. webBrowser加载html页面
  6. wps 使用中文ID
  7. Overview of the English Slot Filling Track at the TAC2014 Knowledge Base Population Evaluation
  8. mysql常见问题总结
  9. 二分图(概念、相关算法和题目应用)(全面整理)
  10. 软件工程 计算机网络 双绞线制作实验报告