Отображение знака евро в PDF с использованием XSLT 1.0 - PullRequest
1 голос
/ 02 марта 2012

Резюме: * Необходимо отобразить знак евро в формате 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 Ответ

1 голос
/ 14 января 2016

У меня возникла такая же проблема.Проблема жестко запрограммирована в 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);
}

Используя эту библиотеку с этим новым методом, символ евро волшебным образом стал видимым!

...