iText PDF 生成pdf中文不顯示


小編參與的項目中有生成 pdf,經過一番查找之后,確定要使用 iText PDF 

 iText PDF maven 配置(springboot)

        <dependency>
            <groupId>com.itextpdf</groupId>
            <artifactId>itextpdf</artifactId>
            <version>5.5.13</version>
        </dependency>
        <dependency>
            <groupId>org.xhtmlrenderer</groupId>
            <artifactId>core-renderer</artifactId>
            <version>R8</version>
        </dependency>
        <dependency>
            <groupId>com.itextpdf</groupId>
            <artifactId>itext-asian</artifactId>
            <version>5.2.0</version>
        </dependency>
        <dependency>
            <groupId>com.itextpdf.tool</groupId>
            <artifactId>xmlworker</artifactId>
            <version>5.5.13</version>
        </dependency>

 

 iText PDF 生成 pdf 需要借助 html 模板

需要動態生成的部分要用占位符(${aa})

小編在這里遇到了問題,由於 html 模板和動態參數都含中文(在 Windows 系統中測試沒有問題),在 linux 服務器下測試就遇到了問題,所有的中文都消失了!!

百度好久都說要修改  linux 的系統的默認編碼、中文字體等等。。。

偶然間,想起 tomcat 中文亂碼,是在 java 的 jre/lib/fonts/ 下放入 Windows 的字體,然后解決!!(結果還是不行、、、、)

好了,不套路了。直接上解決方案

1.模板,在模板的 body 里寫入 style 定義 font-family(這里需要注意!!要使用字體的對應英文名稱,不要使用:微軟雅黑、華文中宋等等)

<body style="font-size:12.0pt; font-family:SimSun">  

小編也不知道什么時候保存了一份 字體對應英文

 2.在 linux 系統的字體庫中添加自己用到的字體庫,小編建議,在 fonts 目錄下新建一個自己字體名字的目錄,如下圖:

/usr/share/fonts/

這樣比較方便自己管理,避免與系統字體庫產生沖突

以上兩點做到之后,再導出 pdf 就不會亂碼了!!

以上僅是小編本人在開發中遇到問題的解決方案。如果不合適,可以留言,共同探討!!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM