日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > HTML >内容正文

HTML

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

發布時間:2023/12/14 HTML 53 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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做模板.當然啦,實現方法很多,以上只是其中一種,如有更好的方法請評論告知,謝謝~

總結

以上是生活随笔為你收集整理的freemarker生成word文档,通过libreoffice完美转为pdf文件排版不乱(包含调用浏览器打印pdf)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。