1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > freemarker生成word文档 通过libreoffice完美转为pdf文件排版不乱(包含调用浏览器打印pdf)

freemarker生成word文档 通过libreoffice完美转为pdf文件排版不乱(包含调用浏览器打印pdf)

时间:2022-08-08 06:27:46

相关推荐

freemarker生成word文档 通过libreoffice完美转为pdf文件排版不乱(包含调用浏览器打印pdf)

了解libreoffice的朋友都知道,freemarker是用xml生成的word文档,libreoffice打开这些文档会不兼容,会直接显示xml代码或排版差别很大,尤其是文档中包含一些复杂表格的时候

一开始的时候我用office的doc做模板,生成文件后转pdf,版面差别太大,失败~

后来觉得docx解压后全是xml文件应该会完美兼容,索性将docx做模板,解压替换文件后用java.util.zip重新压缩,结果wps打开完美,office打开完美,可是libreoffice直接报错打不开,研究后不得其解,失败~

再后来我发现libreoffice中有个格式fodt,是xml文本文档,果断用它做模板,完美结合,成功~

生成pdf文件步骤:

使用libreoffice新建并做出符合需求的模板保存为fodt格式文件用freemarker语法去写标签做好后保存为ftl格式后台获取数据并生成fodt格式临时文件使用libreoffice转化为pdf文件

pdf预览并打印:

前端使用iframe标签预览

//我是不预览,所以加style<iframe id="downloadFrame" style="display:none;"></iframe>

调用浏览器打印

//将后台返回的pdf文件路径赋给src$('#downloadFrame').attr('src',res.resultValue.PATH);//加载完成后打印$('#downloadFrame').load(function() {console.log('print')var PDF = document.getElementById('downloadFrame');PDF.focus();PDF.contentWindow.print();});

ps:我是要通过libreoffice生成pdf文档才使用的fodt格式文件做freemarker模板的,fodt文件wps和office是不支持的,如果你的需求只是生成word文档则可直接使用offoce word做模板.当然啦,实现方法很多,以上只是其中一种,如有更好的方法请评论告知,谢谢~

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。