fop加中文字体配置
官方配置文档:解压下载包,在fop-2.3\fop\examples/fo/advanced里面的cid-fonts.pdf,本文档内容仅适用于0.85版本的fop,需要给字体文件生成xml,现在的新版本不必如此。推荐下载使用新版本。详见官方文档,可翻译。
- 找到字体文件,不用生成xml文件(示例使用的fop-2.3就不用)
只需要设置配置文件即可。
如果是特殊字体,建议将字体放置在fop文件夹内,方便配置后期迁移使用,如果是普通的系统字体,在fop.xconfig中设置一下<auto-detect/>即可,在命令中加载此配置文件时会自动加载系统字体,但是会速度较慢,如果特定使用某一或某些字体,也建议将字体放在fop文件夹内,然后配置配置文件,特定加载该字体文件。
- fop的配置文件:fop-2.3\fop\conf里面的fop.xconf
示例配置(来自官网)
ttf
ttc
示例位置,因为直接在fop.xconf同一路径,所以url可以直接写simsun.ttc,也能识别到。
<font embed-url="simsun.ttc" sub-font="SimSun"> <font-triplet name="SimSun" style="normal" weight="normal"/> <font-triplet name="SimSun" style="normal" weight="bold"/> <font-triplet name="SimSun" style="italic" weight="normal"/> <font-triplet name="SimSun" style="italic" weight="bold"/> </font>
PS:如果有多个字体文件,不想直接放置在conf文件夹下,可以在conf文件夹内新建fonts文件夹,放置字体文件。然后在fop.xconf文件中新增参数“font-base”,如图所示:
- 设置xsl文件和xml文件
自带的示例文件和命令:切换到fop的主文件夹,输入命令:
fop -xsl xsl文件位置 -xml xml文件位置 -pdf pdf文件位置
- 修改xml文件,修改xsl文件,输入中文。
xsl文件是pdf的格式输入中文;xml文件是pdf的内容输入中文
输入命令:重点!!!一定要加上-c cong配置文件所在位置。
执行完毕后,打开pdf查看,应用中文成功。
重点:conf文件中针对ttc的字体一定要配置sub-font参数,否则会出现如下报错:
java.lang.RuntimeException: Failed to read font file simsun.ttc
java.lang.IllegalArgumentException: For TrueType collection you must specify which font to select (-ttcname)