Показать сообщение отдельно
Старый 11.12.2012, 23:36   #41  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2476 (88) +++++++++
Регистрация: 20.08.2005
Дело в том, что в pdf-файл из аксапты символы записываются в 8-битной кодировке.
Если не предпринимать специальных мер, то и отображаться они будут из первых 256 символов (глифов) шрифта.
Для того, что бы отображался все-таки правильный текст, в спецификацию шрифта в pdf добавляется таблица различий (Differences), в которой записывается, что такому-то коду символа в тексте будет соответствовать такое-то имя глифа в файле шрифта
Выглядит это, приблизительно, так
Код:
/Differences [ 128 /Euro 157 /overscore 170 /Rcedilla 181 /mu1 186 /rcedilla 192 /Aogonek/Iogonek/Amacron]
В коде в Аксапте эта таблица строится по данным самого шрифта (на основании кодировки, которую вы установили BALTIC_CHARSET) в методе GetDifferences().

В файле, который вы выложили, такая таблица тоже присутствует, но вот для символов, которые отображаются неверно, соответствия нет. По какой-то причине, в таблице соответствия глифов в шрифте не прописаны символы ccaron, scaron, zcaron

Но можно попробовать модифицировать этот метод, что бы необходимые соответствия все-таки попали в файл.
Надо добавить следующий код
X++:
for (l=128-firstChar;l<lastChar-firstChar+1;l++)
{
    ... 
}
//Добавляем здесь -->
if (charSet == #BALTIC_CHARSET && Differences)
    Differences += " 200 /uni010C 208 /uni0160 222 /uni017D 232 /uni010D 240 /uni0161 254 /uni017E";
//Добавляем здесь <--
return true;
На выходе должен получиться файл, как во вложении
Вложения
Тип файла: pdf AxaptaReport1.pdf (630.1 Кб, 340 просмотров)
__________________
Axapta v.3.0 sp5 kr2
За это сообщение автора поблагодарили: raz (10), S.Kuskov (10).