java调用freemarker模板文件在服务器生成pdf或word文

首先,需解决用户上传文档转化为PDF的问题。考虑到项目部署环境,排除了基于MS Office的方案,最终选定使用LibreOffice的SDK完成转换。为解决Java与LibreOffice交互的问题,采用开源的JODConverter插件。测试结果显示转换效果满意,速度理想,但该插件不支持多线程。其次,实现在线预览PDF的方案。考虑到Flash的复杂性...
java调用freemarker模板文件在服务器生成pdf或word文
在线预览文档功能实现概述

在前年的项目中,需要一个在线预览功能,即用户上传的Word或Excel等文档可以不经过下载直接在线预览。项目部署在Linux上,对比了多种解决方案后,决定将所有文档统一转化为PDF,使用H5技术的PDF在线预览模块来实现在线预览。此过程涉及两个关键问题:文档转换为PDF和在线预览PDF。

首先,需解决用户上传文档转化为PDF的问题。考虑到项目部署环境,排除了基于MS Office的方案,最终选定使用LibreOffice的SDK完成转换。为解决Java与LibreOffice交互的问题,采用开源的JODConverter插件。测试结果显示转换效果满意,速度理想,但该插件不支持多线程。

其次,实现在线预览PDF的方案。考虑到Flash的复杂性和高昂成本,选择了使用火狐自家的PDF.js,纯H5实现,无需任何插件,满足在线预览需求。但其不支持IE8以下浏览器,存在一定的兼容性限制。

以上方案解决了文档预览问题,对于数据填写后生成固定格式的文档需求,可参考此解决方案。FreeMarker作为视图层的一部分,与文档生成属于不同层次,与生成文档并无直接关联。

针对生成固定格式文档的需求,推荐使用Java中强大的Apache POI库。POI库对于读取文档功能表现良好,但对于写入功能,尤其是对样式操作的直观性有所欠缺。尽管如此,对于所谓的“固定格式表格”生成,POI库应能满足需求。

综上所述,解决文档预览和生成固定格式文档的问题,推荐方案为:POI(生成文档)-> LibreOffice + JODConverter(转换文档至PDF)。如果需要在线预览文档,则使用PDF.js。此方案在满足用户需求的同时,兼顾了功能实现的高效性和兼容性。2024-08-26
mengvlog 阅读 135 次 更新于 2025-09-10 13:23:44 我来答关注问题0
  •  文暄生活科普 Java的FreeMarker模板引擎的几种模板加载方式

    FreeMarker模板引擎在Java中提供了多种模板加载方式,以适应不同的应用场景和需求。以下是FreeMarker支持的几种主要模板加载方式:目录加载(Directory Loading)说明:通过指定模板文件的根目录来加载模板。这是最简单且直观的方式。实现:使用Configuration对象的setDirectoryForTemplateLoading方法设置模板根目录,然...

  •  翡希信息咨询 Java使用FreeMarker模版技术动态生成word实践

    1. 准备数据 数据来源:通过查询数据库或调用API接口获取所需数据。 数据格式:确保数据格式与FreeMarker模板中定义的变量格式相匹配。2. 制作Word模板 设计静态Word文档:创建一个包含预期样式的静态Word文档。 插入FreeMarker语法:在静态Word文档中使用FreeMarker语法标记需要动态变化的内容。例如,使用${varia...

  •  文暄生活科普 Java使用FreeMarker模版技术动态生成word实践

    首先,准备数据。这可以通过查询数据库或调用API接口来获取所需数据,确保数据准备完毕后,进行下一步。其次,制作Word模版。设计一个静态Word文档,包含预期的样式,如字体、字号、段落布局等。接下来,利用FreeMarker语法,在静态Word文档中加入变量表示需要动态变化的内容,如对象属性和循环。完成FreeMarker模...

  • Freemarker的主要生成方法如下:public boolean generate(String templateFileName, Map data, String fileName) { try { // 获取模板文件位置 String templateFileDir = templateFileName.substring(0, templateFileName.lastIndexOf("/"));// 获取模板文件名 String templateFile = templateFileName.substring...

  •  翡希信息咨询 Java FreeMarker模板引擎注入深入分析

    Java FreeMarker模板引擎注入深入分析:FreeMarker模板引擎的基本概念:FreeMarker是一个基于模板的引擎,它允许开发者通过模板和数据模型生成文本输出,常用于Web开发中的页面渲染。它涉及两个核心概念:插值和FTL指令。FreeMarker SSTI漏洞:SSTI漏洞允许攻击者通过注入恶意模板代码来执行任意命令或访问敏感数据。

檬味博客在线解答立即免费咨询

Java相关话题

Copyright © 2023 WWW.MENGVLOG.COM - 檬味博客
返回顶部