forum.bitel.ru
http://forum.bitel.ru/

Шрифт в печатной форме
http://forum.bitel.ru/viewtopic.php?f=14&t=2586
Страница 1 из 1

Автор:  DDPaul [ 16 июл 2009, 14:22 ]
Заголовок сообщения:  Шрифт в печатной форме

Здраствуйте.

Есть ли возможность использовать другие шрифты в печатной форме помимо Arial?

Автор:  Администратор [ 20 июл 2009, 12:18 ]
Заголовок сообщения: 

http://wiki.bitel.ru/index.php/FO(P)

Автор:  DDPaul [ 21 июл 2009, 17:47 ]
Заголовок сообщения: 

Спасибо. Добавил шрифт Times New Roman по инструкции "Добавление новых шрифтов в FO шаблоны".

В userconfig.xml:
Код:
   <font metrics-file="times.xml" kerning="yes" embed-file="times.ttf">
      <font-triplet name="times" style="normal" weight="normal"/>
   </font>
   <font metrics-file="timesbold.xml" kerning="yes" embed-file="timesbold.ttf">
      <font-triplet name="times" style="normal" weight="bold"/>
   </font>


В шаблоне печатной формы заменил все "arial" на "times".

Печатная форма с новыми шрифтами генерируется нормально, а вот экспорт в pdf не работает. Получаемый на выходе pdf-файл (размер 15 байт):
Код:
%PDF-1.3
%����


В server.out при сохранении в pdf появляется сообщение:
Код:
[Fatal Error] :1:67925: The element type "font-metrics" must be terminated by the matching end-tag "</font-metrics>".
file:///opt/BGBillingServer/dummy.xsl; Line #0; Column #0; java.lang.NullPointerException


Как изжить эту ошибку?

Автор:  DDPaul [ 28 июл 2009, 12:55 ]
Заголовок сообщения: 

Вопрос все еще актуален, ответьте, пожалуйста.

Автор:  DDPaul [ 28 июл 2009, 13:00 ]
Заголовок сообщения:  Версии

Клиент: 4.6.408, сервер: 4.6.513, bill: 4.6.201

Автор:  Amir [ 28 июл 2009, 14:12 ]
Заголовок сообщения: 

Что-то не так сгенерилось судя по всему... проверьте что times.xml - валидный xml.

Автор:  DDPaul [ 28 июл 2009, 15:53 ]
Заголовок сообщения: 

Проверил times.xml, явных ошибок в нем нет, отличие с изначально включенным arial.xml только в элементе <embed>.

Автор:  DDPaul [ 28 июл 2009, 15:55 ]
Заголовок сообщения: 

Прилагаю times.xml

Вложения:
times.zip [9.47 КБ]
Скачиваний: 240

Автор:  Amir [ 28 июл 2009, 16:05 ]
Заголовок сообщения: 

Может быть в timesbold.xml? А сам шаблон счета?
Если ни чем больше не отличаются попробуйте скопировать arial.xml в times.xml и bold соответственно.

Автор:  DDPaul [ 28 июл 2009, 16:42 ]
Заголовок сообщения: 

Нет, файлы отличаются, конечно, в том числе и размером, просто элемент embed явно бросается в глаза.

arial.xml:
Код:
<embed class="Arial" file="Arial"/>


times.xml:
Код:
<embed/>


Пробовал менять его в times.xml:
Код:
<embed class="TimesNewRoman" file="TimesNewRoman"/>

ничего не изменилось.

По поводу timesbold - вообще исключил шрифт как из fop.jar, так и из шаблона. После чего в server.out появилась другая ошибка:
Код:
[Fatal Error] :1:67594: Element type "pair" must be followed by either attribute specifications, ">" or "/>".
file:///opt/BGBillingServer/dummy.xsl; Line #0; Column #0; java.lang.NullPointerException


Можно ли как-то подсмотреть dummy.xsl?
Шаблон прилагаю.

Вложения:
maestro_bill_pdf.zip [3.72 КБ]
Скачиваний: 254

Автор:  DDPaul [ 04 авг 2009, 11:32 ]
Заголовок сообщения: 

Есть ли изменения по этой проблеме?

Автор:  DDPaul [ 05 авг 2009, 15:56 ]
Заголовок сообщения: 

Вобщем проблема в итоге решилась. Оказывается новые ttf и xml файлы шрифтов запаковывались в fop.jar с ошибками (CRC error) и биллинг просто не мог их вытащить целиком. Как только разобрался с архиватором, pdf стал генерироваться нормально.

Правда появился еще один нюанс. Опишу его подробно, вдруг кто-то еще столкнется.

Изначально я решил попробовать перейти на другой шрифт из-за того, что Arial показывал только жирное начертание в печатной форме. В pdf'е же было как нормальное, так и жирное начертание. Вдоволь помыкавшись со шрифтами, обратил внимание на userconfig.xml в fop.jar/conf, а именно:
Код:
   <font metrics-file="arial.xml" kerning="yes" embed-file="arial.ttf">
      <font-triplet name="arial" style="normal" weight="normal"/>
   </font>
   <font metrics-file="arialbold.xml" kerning="yes" embed-file="arialbold.ttf">
      <font-triplet name="arial" style="normal" weight="bold"/>
   </font>

Обратите внимание, что font-triplet name = arial в обоих случаях.

Далее, если в шаблоне счета будет подобное описание стиля:
Код:
   <xsl:attribute-set name="text">
      <xsl:attribute name="font-family">arial</xsl:attribute>
      <xsl:attribute name="font-size">10pt</xsl:attribute>
                ...
   </xsl:attribute-set>

то вместо обычного начертания будет использоваться жирное!

Если указан атрибут
Код:
 
   <xsl:attribute name="font-weight">bold</xsl:attribute>

то начертание, естественно, тоже жирное.

Атрибут font-weight = normal, указанный явно:
Код:
 
   <xsl:attribute name="font-weight">normal</xsl:attribute>

никоим образом на начертание не влияет - опять везде bold.

Решил эту проблему следующим способом:
В userconfig.xml явно указать font-triplet name = arialbold:
Код:
   <font metrics-file="arial.xml" kerning="yes" embed-file="arial.ttf">
      <font-triplet name="arial" style="normal" weight="normal"/>
   </font>
   <font metrics-file="arialbold.xml" kerning="yes" embed-file="arialbold.ttf">
      <font-triplet name="arialbold" style="normal" weight="bold"/>
   </font>

Далее, в шаблоне использовать font-family = arialbold:
Код:
   <xsl:attribute name="font-family">arialbold</xsl:attribute>

Страница 1 из 1 Часовой пояс: UTC + 5 часов [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/