Здравствуйте,
у меня такая ситуация. Использую TCPDF для генерации PDF файлов. Эта библиотека на ура принимает UTF-8, но мне категорически не нравятся размеры файлов.
Скажем, если я использую в документе её стандартные freesans и freeserif, то 1 страничный документ получается в 1,2 мегабайта. Это все потому, что TCPDF включает в файл PDF юникодные шрифты freeserif и freesans.
Прочитав README я понял, что размер этих шрифтов можно уменьшить, если использовать cp1251 (например).
Делается это колдовством с:
<?php
require('makefont.php');
MakeFont('times.ttf','times.ufm',true,'cp1251');
?>
Так вот, у меня вопрос.
Может уже у кого есть эти файлы шрифтов сжатые под cp1251? Чтоб мне не заниматься шаманством?
Киньте сюда плиииз эти файлы.
PS. про $html = iconv("windows-1251","utf-8", $html); я знаю
Комментарии
по-хорошему, правильная библиотека по генерации pdf должна поддерживать загрузку не всего шрифтового набора в готовую pdf-ку, а только глифов используемых в документе.
"Reducing the Size of TrueType Fonts" в http://www.tecnick.com/public/code/cp_dpage.php?aiocp_dp=tcpdf_fonts ?
Да, я это все читал, просто думал у кого то уже файлы есть готовые.
Если нет, то придется самому шаманить.
Если все получится, то выложу здесь руководство.
Да, жудкая это вещь TCPDF.
Все, что у них описано по поводу уменьшения размеров шрифтов не работает. Уже убил целый день на метод проб и ошибок.
если ты про вычленение cp1251, то я попробывал сделать как описано в доках..
ttf2ufm -b -L cp1251.map times.ttf times
получил
30K times.afm
72K times.pfb
30K times.ufm
исходный times.ttf был 400K. явное уменьшение в объеме.
если актуально -- http://outbox.newmental.ru/times.tgz
С вычлинением у меня было все нормально.
проблемы начинались с ипользования MakeFont() - сыпались ошибки типа не найден глиф такой то.
потом они продолжились с TCPDF() - там то же не все гладно и очевидно.
В общем, методом проб и ошибок я победил это проблему (за сутки).
Надеюсь сегодня опубликовать описание.
Подскажите пожалуйста: у меня проблема с кириллицей в той же библиотеке, в конкретном шрифте (TagitCTT) она отображается кирпичами, хотя в других (comic) все как надо. Оба шрифта добавлялись мною, алгоритм процедуры одинаковый.
надо или шрифты брать качественные или имеющиеся проверять на кодировку.
первое можно начать искать здесь -- http://en.wikipedia.org/wiki/Free_software_Unicode_fonts,
для второго -- http://fontforge.sourceforge.net/
шрифты еще можно посмотреть здесь -- http://openfontlibrary.org/ и, конечно же, шрифты идущие в поставке винды на редкость качественные.
Скорее всего в этом шрифте нет юникода.
Я решил свою проблему путем преобразования типа шрифта из TrueType в Type1 в кодировке cp1251.
Подробнее можно почитать тут: http://www.drupal.ru/node/37044
спасибо, буду шаманить и параллельно наводить порчу на дизайнера кот выбрал этот шрифт)))
не получилось, наш проект тоже на utf-8, вместо хака я вставил $html = iconv("cp1251","utf-8", $html);. В результате кирпичи сменились на знаки "?".
Этого мало. Почитайте мое описание. Там как минимум в 4 местах нужно код хакать.
Спасибо большое всем, но проблема была решена просто: взяли проверенный times и с помощью FontLab Studio вставили нужное начертание символов))))))))))))))
Может кому то ещё пригодится.
Папка fons с работающей TCPDF (использую Arial): https://truewebstories.ru/sites/default/files/0my_files/blog/tcpdf/font.zip
Больше инфы про шрифты (и не только) в TCPDF: https://truewebstories.ru/zametki/tcpdf-prakticheskie-zametki-dokumentac...
В новых версиях в папке tools есть утилита tcpdf_addfont.php
Запускается из командной строки /путь/tcpdf_addfont.php [options] -i /путь/font.ttf
Дополнительные options смотрим в файле. Можно сразу несколько файлов конвертить.
На выходе, в папке fonts tcpdf генерятся *.php, *.z, *.ctg.z