XSL FO:使用法语,德语和意大利语字符的多语言pdf

时间:2015-01-05 06:05:01

标签: xsl-fo

我在我的项目中使用FOP 1.1 jar。 问题就是这样,当我在我的xsl fo模板中用法语打印静态文本如“Numérodecommande”时,出现了奇怪的字符而不是“é”。我在fo root标签中使用了base 14的字体系列(Times Roman),但仍然出现了这个问题。 最后,请帮我解决这个问题。

1 个答案:

答案 0 :(得分:1)

(发布您的FO文件的简短示例可能真的有助于找到一个精确的解决方案;没有它,我们只能尝试猜测...)

提及"奇怪的角色"而不是期望的那些指向编码问题;否则可能是字体配置问题。

如果您打开FO文件,重音字符是否按预期显示?

如果没有,输入文件中存在一个问题,而FOP只是表现正常。
可能的原因和暂定的解决方案:

  • FO文件enconding未设置或不正确:UTF-8应该是一个安全的选择,因此在初始xml声明中尝试使用 encoding =" UTF-8"
  • 也许有些文字被复制并粘贴到FO文件中,出了点问题:尝试直接在FO文件中编写重音字符,并检查生成的pdf是否正确
  • 如果您的项目代码生成了FO文件,请检查您是否错误地将unicode字符串用作char序列

FO文件包含重音字符,但PDF显示"#"代替吗

然后它肯定是FOP字体配置的问题。请注意,如果使用Base-14字体,则无需进行字体配置。

例如,这个简单的FO文件产生正确的输出,没有任何配置,也没有任何与字体相关的属性:

<?xml version="1.0" encoding="UTF-8"?>
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
    <fo:layout-master-set>
        <fo:simple-page-master master-name="one">
            <fo:region-body />
        </fo:simple-page-master>
    </fo:layout-master-set>
    <fo:page-sequence master-reference="one">
        <fo:flow flow-name="xsl-region-body">
            <fo:block>à è ê é ì ò ù ç</fo:block>
        </fo:flow>
    </fo:page-sequence>
</fo:root>

角色&#34;#&#34;当您使用 font-family 属性设置的字体没有正确的字形时,会出现在PDF中(请参阅http://xmlgraphics.apache.org/fop/1.1/fonts.html#missing-glyphs)。

所以: