FOP使用嵌入字體

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>

運行轉換

到這裏就可以了,但是我用命令行轉換時一直報錯找不到字體不知道爲什麼,後來用程序運行轉換成功了,才發現是沒有指定配置文件的問題

這裏寫圖片描述

發佈了74 篇原創文章 · 獲贊 18 · 訪問量 21萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章