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 阅读 8 次 更新于 2025-07-20 02:23:29 我来答关注问题0
  •  翡希信息咨询 【FreeMarker】Java模板引擎——开箱以及使用

    FreeMarker是一个Java模板引擎,用于生成文本输出,其开箱及使用流程如下:环境配置:引入依赖:在项目的pom文件中加入FreeMarker的依赖,以便在项目中使用该模板引擎。配置文件:配置application.yml文件,设置FreeMarker的相关参数,如模板文件的位置、字符编码等。创建模板文件:在配置文件中指定的目录下创建FreeMa...

  •  文暄生活科普 spring服务中怎么使用freemarker?

    首先,在application.properties文件中配置FreeMarker,指定模板文件所在目录及文件后缀。接着,创建以.ftl为后缀的FreeMarker模板文件。在文件内,使用FreeMarker语法生成动态内容,${}表示FreeMarker变量,用于Java代码设置值。然后,于Java代码中调用FreeMarker引擎,通过创建配置对象,传入模板文件及变量,生成输出。

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

  •  品怀缘 FreeMarker里如何调用java代码?

    模板就是 freemarker了,这样程序员就不能把大量java代码写入, 美工和程序员 工作就可以独立了 方法1:定义配置文件 freeerstatic.properties_Validator=com.longyou.util.Validator_Functions=com.longyou.util.Functions_EscapeUtils=com.longyou.util.EscapeUtils/调用代码{_Functions.toUpperCase("Hello")}{...

  • 1. Java模板引擎的作用: 在Java开发中,尤其是使用Spring等框架时,经常需要编写大量的重复代码,如Entity、Mapper等。Java模板引擎技术通过提供预定义的模板,可以自动生成这些重复代码,从而提高开发效率。2. 以freemarker为例: freemarker是一种常用的Java模板引擎,它使用FreeMarker Template Language来定义...

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

Java相关话题

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