2012-03-02 75 views
0

摘要PDF上签字: * 需要在PDF *显示欧元使用XSLT 1.0

我使用.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;'"/>

感谢您的帮助和您的时间!请让我知道是否需要任何额外的信息。

+0

你正在使用什么FO处理器? – 2012-03-02 18:22:36

+0

更新后的描述。谢谢! – m27 2012-03-02 18:35:34

+0

看起来像在ISO-8859-15欧元字符是0xA4所以如果这是你的输出编码,你可能想尝试把¤而不是&#x20AC; – Pawel 2012-03-06 01:21:07

回答

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); 
} 

使用这个库,这种新方法,欧元符号神奇地变成了看得见!