LazReport TlrPdfExportFilter принцип работы со шрифтами?
Модератор: Модераторы
LazReport TlrPdfExportFilter принцип работы со шрифтами?
Здравствуйте какой в TlrPdfExportFilter принцип работы со шрифтами?
Столкнулся с тем, что документ сохраненный в PDF из fastreport 5.* который встроен в один проект и документ сделанный с помощью LazReport TlrPdfExportFilter в разных просмотрщиках открывается по разному.
файлы PDF из LazReport открывается во всех просмотрщиках (по умолчанию) на смартфонах разных производителей (Asus, Samsung, Xiaomi, iPhone)
а вот такой же отчет сохраненный в PDF из FastReport открывается нормально только в iPhone , на Андроидах букв нет, есть только символы (точки , слэши, двоеточия и т.д.)
А Asus даже ругнулся на отсутсвие шрифтов Arial
Я так понимаю LazReport использует какие-то очень распространенные шрифты, поэтому с файлом нет проблем. Или вообще шрифты в файл встраиваются?
Как вообще это работает? Есть опыт?
Столкнулся с тем, что документ сохраненный в PDF из fastreport 5.* который встроен в один проект и документ сделанный с помощью LazReport TlrPdfExportFilter в разных просмотрщиках открывается по разному.
файлы PDF из LazReport открывается во всех просмотрщиках (по умолчанию) на смартфонах разных производителей (Asus, Samsung, Xiaomi, iPhone)
а вот такой же отчет сохраненный в PDF из FastReport открывается нормально только в iPhone , на Андроидах букв нет, есть только символы (точки , слэши, двоеточия и т.д.)
А Asus даже ругнулся на отсутсвие шрифтов Arial
Я так понимаю LazReport использует какие-то очень распространенные шрифты, поэтому с файлом нет проблем. Или вообще шрифты в файл встраиваются?
Как вообще это работает? Есть опыт?
- Снег Север
- долгожитель
- Сообщения: 3067
- Зарегистрирован: 27.11.2007 15:14:47
- Контактная информация:
В формате PDF есть два варианта - текст вставлен как изображение, созданное экспортером, и текст представлен символами определенного в документе шрифта. Просмотрщик пытается использовать или указанный шрифт, или подставить на его место "похожий". Если это "похожий" не имеет нужной кодовой страницы, выходит абракадабра.
Варианты борьбы - 1) использовать только самые стандартные юникодовские шрифты 2) печатать в картинку, а картинку уже конвертировать в PDF.
Варианты борьбы - 1) использовать только самые стандартные юникодовские шрифты 2) печатать в картинку, а картинку уже конвертировать в PDF.
- alexs
- долгожитель
- Сообщения: 4066
- Зарегистрирован: 15.05.2005 23:17:07
- Откуда: г.Ставрополь
- Контактная информация:
Снег Север
Добавлю свои 5 копеек. В PDF можно встраивать либо весь шрифт, либо только используемые глифы.
jsa
Когда делал TlrPdfExportFilter столкнулся с тем, что если не вставлять веcь шрифт, а только используемые глифы - как раз и проявляется описанный вами эффект. Потому там встраивается весь шрифт.
В FR по умолчанию, кажется, используется встраиваение только используемых глифов.
Размер кончено меньше - но проблема есть.
Добавлю свои 5 копеек. В PDF можно встраивать либо весь шрифт, либо только используемые глифы.
jsa
Когда делал TlrPdfExportFilter столкнулся с тем, что если не вставлять веcь шрифт, а только используемые глифы - как раз и проявляется описанный вами эффект. Потому там встраивается весь шрифт.
В FR по умолчанию, кажется, используется встраиваение только используемых глифов.
Размер кончено меньше - но проблема есть.
alexs писал(а):Когда делал TlrPdfExportFilter столкнулся с тем, что если не вставлять веcь шрифт, а только используемые глифы - как раз и проявляется описанный вами эффект. Потому там встраивается весь шрифт.
Я правильно понимаю, что TlrPdfExportFilter это твоя разработка?
Да нет, хочу выразить благодарность. Твоя работа когда-то, очень помогла мне сейчас, облегчить работу сотрудников. Спасибо.
Доброго дня, может ни совсем в тему но по выгрузке в pdf. Возникает проблема с QR при экспорте в pdf он игнорирует его. Возможно решен данный момент? Или может я что то ни учел при построение отчета?
День добрый.
Поднимаю тему.
Почему-то в экспортированном в PDF отчете не срабатывает установка на жирные шрифты.
в Дизайнере макета на предпросмотре шрифты отображаются жирными
а в файле уже нет.
пробовал Arial и Time New Roman
Экспорт делаю так
Может нужна какая-то настройка компонент?
Добавлено спустя 24 минуты 14 секунд:
Еще странности и интересности.
Все Memo лежат на бендах в данном макете.
А в одном тестовом макете бендов нет, и все шрифты в Memo выгружаются корректно, там где Bold там жирые , там где нет то нет.
Решил проверить в целевом макете, бросил Memo на Page (не на бенд) сделал шрифт жирным
И в выгруженном pdf вообще весь текст стал жирным.
потом положил еще один Memo рядом и попробовал различные комбинации.
Т.е. получается, что при выгрузке Bold на шрифтах считывается только для объектов вне бендов.
И первая установка Bold становится установкой по умолчанию для всех объектов и на бендах и вне бендов.
Т.е. видимо это ошибка в компоненте.
Т.е. при наличии бендов на странице, всегда есть проблема со шрифтами, когда бендов нет, то и проблемы нет
Поднимаю тему.
Почему-то в экспортированном в PDF отчете не срабатывает установка на жирные шрифты.
в Дизайнере макета на предпросмотре шрифты отображаются жирными
а в файле уже нет.
пробовал Arial и Time New Roman
Экспорт делаю так
Код: Выделить всё
FormMain.frReport_restests.ExportTo(TlrPDFExportFilter, fname); Может нужна какая-то настройка компонент?
Добавлено спустя 24 минуты 14 секунд:
Еще странности и интересности.
Все Memo лежат на бендах в данном макете.
А в одном тестовом макете бендов нет, и все шрифты в Memo выгружаются корректно, там где Bold там жирые , там где нет то нет.
Решил проверить в целевом макете, бросил Memo на Page (не на бенд) сделал шрифт жирным
И в выгруженном pdf вообще весь текст стал жирным.
потом положил еще один Memo рядом и попробовал различные комбинации.
Т.е. получается, что при выгрузке Bold на шрифтах считывается только для объектов вне бендов.
И первая установка Bold становится установкой по умолчанию для всех объектов и на бендах и вне бендов.
Т.е. видимо это ошибка в компоненте.
Т.е. при наличии бендов на странице, всегда есть проблема со шрифтами, когда бендов нет, то и проблемы нет
У вас нет необходимых прав для просмотра вложений в этом сообщении.
- alexs
- долгожитель
- Сообщения: 4066
- Зарегистрирован: 15.05.2005 23:17:07
- Откуда: г.Ставрополь
- Контактная информация:
Проверь с другими шрифтами.
Просто укажи для мемо другой шрифт.
Я проверил сейчас с Liberation Sans - всё норм.
Там есть одна тонкость что старые виндовые шрифты могут не верно обрабатываться.
Просто укажи для мемо другой шрифт.
Я проверил сейчас с Liberation Sans - всё норм.
Там есть одна тонкость что старые виндовые шрифты могут не верно обрабатываться.
попробовал, ситуация не изменилась. Да и сам шрифт в винде выглядит не очень.
слова "Область исследования", "Номер карты"
предпросмотр в дизайнере
выгрузка в файл
Добавлено спустя 33 минуты 15 секунд:
В общем диагноз такой.
Не передается весь Style в PDF и именно при наличии на Page бендов
слова "Область исследования", "Номер карты"
предпросмотр в дизайнере
выгрузка в файл
Добавлено спустя 33 минуты 15 секунд:
В общем диагноз такой.
Не передается весь Style в PDF и именно при наличии на Page бендов
У вас нет необходимых прав для просмотра вложений в этом сообщении.
пример это файл lrf ?
Кажется я ошибся с оценкой происходящего.
Без бендов тоже проблема со шрифтами.
в архиве два макета (без бендов) со шрифтами Liberation Sans и Times_New_Roman
Там только тексты, поля выборки из базы убрал.
результирующий пример только для Liberation Sans потому что для Таймс файл получился более 600Кб и тут не прикрепляется. Но и в нем Bold не отрабатывается
Без бендов тоже проблема со шрифтами.
в архиве два макета (без бендов) со шрифтами Liberation Sans и Times_New_Roman
Там только тексты, поля выборки из базы убрал.
результирующий пример только для Liberation Sans потому что для Таймс файл получился более 600Кб и тут не прикрепляется. Но и в нем Bold не отрабатывается
У вас нет необходимых прав для просмотра вложений в этом сообщении.
- alexs
- долгожитель
- Сообщения: 4066
- Зарегистрирован: 15.05.2005 23:17:07
- Откуда: г.Ставрополь
- Контактная информация:
Проблема именено в виндовой версии.
В лине поведение нормально - а вот под виндой - не находится информация о шрифте. Сейчас смотрю под win10x64.
Добавлено спустя 43 минуты 26 секунд:
Понятно
Ручная установка шрифтов в винде стала выглядеть по другому - не так как раньше
шрифты стали в папке C:\Documents and Settings\alexs\Local Settings\Microsoft\Windows\Fonts
Надо читать документацию - какая константа отвечает за эту папку в винде.
Пока чтобы быстро проблему решить - всего лишь надо добавить эту папку в список обрабатываемых каталогов для объекта gTTFontCache
После добавления кода:
всё стало нормально.
Но это конечно костыль. Надо решать более правильно.
В лине поведение нормально - а вот под виндой - не находится информация о шрифте. Сейчас смотрю под win10x64.
Добавлено спустя 43 минуты 26 секунд:
Понятно
Ручная установка шрифтов в винде стала выглядеть по другому - не так как раньше
шрифты стали в папке C:\Documents and Settings\alexs\Local Settings\Microsoft\Windows\Fonts
Надо читать документацию - какая константа отвечает за эту папку в винде.
Пока чтобы быстро проблему решить - всего лишь надо добавить эту папку в список обрабатываемых каталогов для объекта gTTFontCache
После добавления кода:
Код: Выделить всё
procedure TForm1.FormCreate(Sender: TObject);
procedure InitFonts;
procedure CreateFontDirList;
var
s: String;
begin
s := SHGetFolderPathUTF8(20); // CSIDL_FONTS = 20
if s <> '' then
gTTFontCache.SearchPath.Add(s);
gTTFontCache.SearchPath.Add('C:\Documents and Settings\alexs\Local Settings\Microsoft\Windows\Fonts');
end;
var
C: Integer;
begin
if gTTFontCache.Count = 0 then
begin
gTTFontCache.BuildFontCacheIgnoresErrors:=true;
CreateFontDirList;
gTTFontCache.BuildFontCache;
end;
end;
begin
InitFonts;
end;
всё стало нормально.
Но это конечно костыль. Надо решать более правильно.
