使用XSLT 1.0在PDF上显示欧元符号

时间:2012-03-02 18:01:00

标签: .net xslt xslt-1.0 xsl-fo currency-formatting

要点: * 需要在pdf上显示€符号 *

我正在使用.Net framework(4.0)的XslCompiledTransform类来执行XSLT。 XSL上使用的字体系列是Times New Roman。我正在使用FO.Net作为我的XSL-FO处理器。

我正在尝试显示作为输入XML一部分的欧元符号(€)。但是,我的输出pdf显示€而不是€符号。

<CurrencySymbol>
€
</CurrencySymbol>

我的XSL文件的一些相关部分是:

<?xml version="1.0" encoding="iso-8859-15"?>

我已尝试使用&#8364;&#x20AC;,但如果我使用这些,则根本不会显示任何内容。

例如:<xsl:value-of select="'&#x20AC;'"/>

感谢您的帮助和时间!如果需要任何其他信息,请告诉我。

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题。问题是在FONET.DLL中硬编码。在课程TrueTypeFont中,方法MapCharacter写为:

public override ushort MapCharacter(char c) 
{
    if (c > Byte.MaxValue) 
        return (ushort) FirstChar;
    return mapping.MapCharacter(c);
}

因此任何值大于255的字符都将被“忽略”。我下载了源代码(来自https://fonet.codeplex.com/)并将方法修改为:

public override ushort MapCharacter(char c) 
{
    return mapping.MapCharacter(c);
}

在这个新方法中使用这个库,欧元符号神奇地变得可见!