java模板匯出PDF檔案
前言
前段時間在專案中遇到了匯出pdf的問題,之前在專案中遇到匯出檔案莫不是excle或者word檔案的匯出,所以在遇到需要匯出pdf檔案時,我搜尋了許多的網頁內容,但是很多網頁給出的答案也不是正解,走了許多的歪路後才最終實現了pdf檔案的匯出,下面提供的pdf檔案匯出希望能幫助到你
PDF檔案匯出
word檔案轉換pdf檔案
通過使用word轉換pdf的方式實現pdf檔案的匯出,因為專案在需求前是要求匯出word檔案的,然後客戶方要求匯出為pdf檔案,所以在此基礎上我使用的是用word檔案轉換pdf。
- 第一步 :通過freemaker模板匯出word檔案
- 匯入doc4j的jar包
<dependency> <groupId>org.docx4j</groupId> <artifactId>docx4j</artifactId> <version>3.2.1</version> </dependency>
- java程式碼
/** * 根據ftl模板匯出word檔案 * @param wordPath word檔案存放路徑 * @param pdfPath 匯出pdf檔案存放路徑 * */ public static void exportPdfForDoc4j(String wordPath,String pdfPath){ InputStream is = null; OutputStream target=null; try { is=new FileInputStream(new File(wordPath)); target=new FileOutputStream(new File(pdfPath)); WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage.load(is); //設定字型 Mapper fontMapper = new IdentityPlusMapper(); /** *你的模板中使用了什麼字型,需要往專案中放入字型格式檔案, *沒設定時可能在windows上不會出現問題,但是linux上沒有該 *字型的話就會使用其預設字型。 **/ URL fontUrl=ExportPdfUtils.class.getResource("/font/FangSong_GB2312.ttf"); PhysicalFonts.addPhysicalFont("FangSong_GB2312",fontUrl); fontMapper.put("仿宋_GB2312",PhysicalFonts.get("FangSong_GB2312")); FOSettings foSettings = Docx4J.createFOSettings(); foSettings.setWmlPackage(wordMLPackage); List<SectionWrapper> sections = wordMLPackage.getDocumentModel().getSections(); //去掉頁尾 for (SectionWrapper section : sections) { FooterPart footerPart = section.getHeaderFooterPolicy().getDefaultFooter(); if(footerPart!=null){ List<Object> content = footerPart.getContent(); for (int i = 0; i < content.size(); i++) { footerPart.getContent().remove(i); } } } Docx4J.toFO(foSettings, target, Docx4J.FLAG_EXPORT_PREFER_XSL); } catch (Exception e) { e.printStackTrace(); }finally { try { if(is!=null) is.close(); if(target!=null) target.close(); }catch (IOException e){ e.printStackTrace(); } } }
- 以上就是通過word檔案轉換pdf的過程,但是轉換的pdf的格式等可能會出現錯亂等問題,所以以下是一些問題的解決
-
換行問題:首先看到的是身份證號碼過長而沒有換行行,但是word中格式確實是換行了的,所以我能找到的辦法就是資料中強制的換行,值的注意的是換行符一定要拼接上去否則換行符無效:
-
邊框變粗:這個問題也是轉換pdf遇到的最大的問題,但是我沒有找到具體的解決方案,只能通過加粗整體邊框線來使這少許的加粗看起來不明顯(加粗後的列印不會有邊框變粗的問題),這裡你可以通過全域性替換w:sz="x"來加粗或變細你的邊框,轉換比例為:1磅==4,
-
空格被省略:我們看到年月日中應該出現的樣子是如下圖展示的一樣,但是在pdf轉換後年月日位置更換不說,中間的空格也被縮減了;所以在做模板時要使用全形的輸入法進行空格的輸入,這樣在匯出pdf時就不會對空格進行縮減。
-
以上問題解決後匯出pdf概覽:
-
相關文章
- Java整合FreeMarker匯出Pdf檔案Java
- java匯出pdfJava
- Java 根據模板生成 PDF 檔案 以及 excel 檔案JavaExcel
- 如何把markdown檔案匯出為pdf
- java匯出Excel檔案JavaExcel
- java匯出CSV檔案Java
- java匯出Excel定義匯出模板JavaExcel
- Java匯出Pdf格式表單Java
- VS匯出專案模板
- 網頁中Office和pdf相關檔案匯出網頁
- MySQL匯入匯出檔案檔案MySql
- 【匯出PDF-專案應用】
- Java實現CSV檔案的匯出Java
- Java 通過Xml匯出Excel檔案,Java Excel 匯出工具類,Java匯出Excel工具類JavaXMLExcel
- 如何將一個PDF檔案裡的圖片批量匯出
- PHP 匯出 PDFPHP
- java生成PDF檔案【Z】Java
- Premiere Pro模板匯入教程 如何匯入.mogrt檔案?REM
- (十一)Electron 匯入匯出檔案
- mysql 匯入匯出 sql檔案MySql
- MySQL匯入匯出平面檔案MySql
- 前端(vue)匯出pdf前端Vue
- React專案實現匯出PDF的功能React
- spring boot itextPdf根據模板生成pdf檔案Spring Boot
- Java操作PDF檔案之ITextJava
- Excel模板匯出之動態匯出Excel
- Oracle 匯出txt檔案Oracle
- js 匯出檔案流JS
- Java與React輕鬆匯出Excel/PDF資料JavaReactExcel
- 華表Cell檔案匯入匯出
- Vue框架下實現匯入匯出Excel、匯出PDFVue框架Excel
- Win10系統利用自帶onenote匯出PDF檔案的技巧Win10
- CAD工具——匯出PDF
- PHP 匯出 CSV 格式檔案PHP
- oralce 匯出csv格式檔案
- Oracle快速匯出平面檔案Oracle
- oracle 大檔案匯出方法Oracle
- exp 分檔案大小匯出