1. 程式人生 > >解決jarsperreport列印PDF中文無法顯示的問題

解決jarsperreport列印PDF中文無法顯示的問題

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();列印報表即可。

相比之下第二種方法更好一些。只需設定一次所有報表共享。

實現效果如下: