FOP使用嵌入字體
在使用FOP轉換文件的時候會遇到沒有中文字體,中文顯示成##的問題。
生成字體矩陣文件
有兩種方法,一個是使用命令行,一個是自己寫java程序轉換,因爲我在文檔裏沒有找到明確的提示,網上找到的文章是用的版本也不同,一直沒有成功,所以就用了第二種方法,創建一個java程序,使用TTFReader類轉換。
package main;
import org.apache.fop.fonts.apps.TTFReader;
public class AddFont {
public static void main(String args[]){
String[] parameters = {
"-ttcname",
"kaiti",
"/home/zhufree/Tools/fop-2.1/conf/kaiti.ttf", "/home/zhufree/Tools/fop-2.1/conf/kaiti.xml", };
TTFReader.main(parameters);
}
}
參數分別是字體ttf文件和生成的xml文件的路徑,這裏爲了方便我直接生成到fop的配置文件夾下了。
運行顯示如下
註冊字體文件
爲了方便,將字體ttf文件和生成的矩陣xml文件放在fop的默認配置文件夾conf中。
在fop.xconf文件中按照提示在font中增加註冊字體的部分:
<font metrics-url="kaiti.xml" kerning="yes" embed-url="kaiti.ttf">
<font-triplet name="kaiti" style="normal" weight="normal" />
<font-triplet name="kaiti" style="normal" weight="bold" />
<font-triplet name="kaiti" style="italic" weight="normal" />
<font-triplet name="kaiti" style="italic" weight="bold" />
</font>
運行轉換
到這裏就可以了,但是我用命令行轉換時一直報錯找不到字體不知道爲什麼,後來用程序運行轉換成功了,才發現是沒有指定配置文件的問題