Символьный шрифт на ABCpdf

Я использую компонент ABCpdf.net для преобразования HTML в PDF. Некоторые элементы HTML используют шрифт Symbol для отображения определенных символов. К сожалению, мы используем HTML-код от стороннего поставщика, и его нельзя изменить.

В моей среде разработки шрифт отображается правильно, а в рабочей среде — нет. Он действует так, как будто шрифт не установлен, хотя это так. Если я визуализирую тот же HTML-код в Internet Explorer в производственной среде, он отображается просто отлично.

Я попытался встроить шрифт как .eot и указать стиль @font-face в заголовке. Я попытался использовать TheDoc.AddFont('Symbol'). Какие-либо предложения?

Продукт: ABCpdf .NET 7 x64

Рабочая ОС: Windows Server 2003 x64, IE8

ОС разработки: Win7 x64, IE8


person samiz    schedule 22.09.2011    source источник


Ответы (3)


Группа поддержки WebSuperGoo ответила исправлением: установка параметров HtmlOptions, связанных со шрифтом. Я установил эти параметры, и это решило проблему. Ура!

If you want to embed the fonts used in a web page/HTML you need to use:
    Doc.HtmlOptions.FontEmbed = True
You may also need to set
    Doc.HtmlOptions.FontSubstitute = False
and possibly:
    Doc.HtmlOptions.FontProtection = False
before you use the Doc.AddImageUrl or Doc.AddImageHtml methods.

Редактировать: как я упоминаю в комментарии ниже, вариант, который помог, был FontProtection = false.

person samiz    schedule 23.09.2011
comment
Вы пробовали их по отдельности, чтобы увидеть, какая строка кода или комбинация строк заставили вас работать? Я пробовал первую строку в прошлом безуспешно - хотя, возможно, я использовал ее не в том месте. - person Jonny Cundall; 23.09.2011
comment
Я так и сделал. Проблема решается только установкой FontProtection в false. - person samiz; 23.09.2011
comment
У меня были проблемы с моими PDF-файлами, которые я генерирую из HTML и показываю в своем приложении для iPad. Проблема заключалась в том, что пули отображались неправильно. Я изменил тип шрифта и установил Doc.HtmlOptions.FontEmbed = True, и это решило мою проблему. - person Kristian Barrett; 08.10.2014

Попробуйте перезапустить сервер.

У меня была похожая проблема со шрифтами в ABCPdf. Хотя шрифты явно были установлены, по какой-то причине ABDPdf не подхватывал их, пока машина не была перезагружена.

Может быть какой-то способ достижения того же самого без перезапуска, но это повлечет за собой понимание, в чем проблема! Если несложно, попробуйте перезапустить.

person Jonny Cundall    schedule 22.09.2011
comment
Да, в документации сказано, что шрифты на самом деле кэшируются и не будут перезагружены, пока процесс не будет перезапущен. Это не моя проблема, к сожалению, но спасибо! знак равно - person samiz; 23.09.2011

Хотя я сказал, что Doc.HtmlOptions был ответом, оказалось, что это совсем другое. Символы не отображались, потому что вес шрифта был ненормальным (т. е. он был полужирным). Нет подмножества, выделенного жирным шрифтом, которое содержит эти символы. IE достаточно умен, чтобы игнорировать жирный шрифт, но PDF довольно привередлив. Он не может найти персонажа, поэтому просто ничего не показывает.

Настоящим решением было прочесать HTML и убедиться, что все символы окружены span с font-weight: normal !important. Возможно, это менее элегантное решение, но оно эффективно. Единственный символ, который все еще случайно отказывался появляться, — это символ угла (∠). Для этого я заменил его изображением. Я до сих пор не могу понять, почему он не появляется.

person samiz    schedule 20.01.2012