解決jarsperreport列印PDF中文無法顯示的問題
阿新 • • 發佈:2019-02-15
jarsperreport列印PDF格式的報表時,如果不在ireport設計器中設定三個引數,那麼無法顯示中文。引數設定如下:
Font name: 宋體 (中文字型)、PDF font name: STSong-Light、PDF Encoding: UniGB-UCS2-H(Chinese Siplified)、PDF Embeded: √
那麼問題來了,我現在的專案中大概有1000張報表,將每個報表開啟,手動給每個元件加上如上屬性。這顯然是不現實的。目前我發現的解決辦法有兩個。
第一,寫一個程式將專案中的所有報表*.jrxml開啟,插入以下程式碼:
<style name="pdfStyle" isDefault="true" pdfFontName="STSong-Light" pdfEncoding="UniGB-UCS2-H" isPdfEmbedded="true"/>
然後在呼叫</pre><p>然後編譯所有的jrxml檔案生成對應的jasper檔案即可。</p><p>第二,就是在列印PDF的java程式碼中加入如下幾行:</p><p><pre name="code" class="java">JRStyle style = new JRBaseStyle(); style.setPdfEmbedded(true); style.setPdfFontName("STSong-Light"); style.setPdfEncoding("UniGB-UCS2-H"); jasperPrint.setDefaultStyle(style);
JRPdfExporter exporter = new JRPdfExporter();
exporter.exportReport();列印報表即可。
相比之下第二種方法更好一些。只需設定一次所有報表共享。
實現效果如下: