生成圖表后自動生成chart表的問題:
我測試生成圖表中的中文問題都解決了,但是每次生成chart圖時會報UTF編碼錯誤,從錯誤判斷應該是某個文件的編碼錯誤,起初根據錯誤判斷是filter的問題,可是filter那點代碼中根本不涉及編碼的問題.我將很多配置文件的編碼都改了也不行.因為那個英文例子沒問題,我查看了JFreechart的一個servlet(org.jfree.chart.servlet.DisplayChart),因為jpviot就是調用這個servlet實現繪圖的,分析這個servlet我知道它會在一個臨時目錄生成png文件,然后交給servlet寫到瀏覽器的響應中去,我找到那個臨時目錄(tomcattemp),發現里面已經生成了正確的中文圖形.從而判斷圖形生成正確,但是寫到瀏覽器中時出了問題.最后我查看能生成英文圖表的那個例子,發覺不僅僅在html中生成圖形,而且生成map.而這個map的生成全是在程序中做的,程序生成一個xml文件,通過chart.xsl解析生成map的最終html代碼.但是在程序中生成時并沒有加入編碼設置,因此問題出在生成map這兒.
最終修改代碼如下:
com.tonbeller.jpivot.chart.ChartComponent:
在render函數中修改如下:
String desc="<?xml version="1.0" encoding="gb2312"?>";
String xchart =desc+"n"+ "<xchart>" + writeImageMap(filename, info, false) + "</xchart>";
這樣就為xchart設置了編碼.
修改jfreechart中的默認字體:
com.tonbeller.jpivot.chart.ChartComponent中定義了幾種字體,但是這幾種字體都是英文字體,我將其修改為宋體:
把所有的字體定義都改為"SimSun"
注意到這兒并沒有玩,如果你僅僅修改程序,仍舊會出現問題,報錯說沒有適合"SimSun"的item
同時要修改一個配置文件:WEB-INFjpivotchartchartpropertiesform.xml
在這個配置文件中將SimSun加入其中,形式如下:
<listBox1 type="string" modelReference="fontName" label="Title font">
<listItem value="SansSerif" label="SansSerif"/>
<listItem value="Serif" label="Serif"/>
<listItem value="SimSun" label="SimSun"/>
<listItem value="Monospaced" label="Monospaced"/>
</listBox1>