Содержание
на понятном языке
Столкнулся недавно с задачей формирования PDF файла из PHP. Немного погуглив нашел два программных решения: FPDF и TCPDF. Первое значительно компактнее второго, но мне не подошло, т.к. там имелись проблемы с русскими шрифтами. Шрифты для него необходимо как-то обрабатывать и включать в состав продукта, после чего можно работать. С этим разбираться не хотелось и поэтому я стал смотреть второй вариант — TCPDF. В кодировке UTF-8 всё отображается сразу нормально.
PDF-файл может формироваться разными способами, самый простой из которых — формирование из HTML кода. Правда HTML поддерживается лишь частично, но все основное есть и работает. Можно задавать стили и цвета текста, размещать картинки и таблицы. Для моей задачи этого было более чем достаточно.
Весьма просто создать PDF-файл из HTML кода средствами TCPDF, вот пример:
1. сначала копируете файлы TCPDF в необходимую папку на хостинге.
2. пишете программный код.
ВАЖНО! Файл примера должен быть записан в кодировке UTF-8! Иначе ничего не увидите в сгенерированном PDF-файле.
На сайте TCPDF имеется множество других примеров.
P.S. Если при запуске примеров Вы видите ошибку:
TCPDF ERROR: Some data has already been output, can’t send PDF file
Проблема такая: хоть убейте, но не могу сделать так, чтобы в пдф отражались русские буквы. Может, кто скинет ссылку, где написано для чайников, как сделать (правда, я уже весь гугл облазил), или сможет написать, как это сделать?
1 ответ 1
Проверьте справедливость следующих пунктов:
- Вы используете unicode (true).
- Вы используете нужную кодировку (UTF-8).
Вы используете шрифт, поддерживающий кириллицу (dejavusans).
Всё ещё ищете ответ? Посмотрите другие вопросы с метками pdf tcpdf php или задайте свой вопрос.
Похожие
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
дизайн сайта / логотип © 2020 Stack Exchange Inc; пользовательское содержимое попадает под действие лицензии cc by-sa 4.0 с указанием ссылки на источник. rev 2020.1.17.35809
Здравствуйте,
у меня такая ситуация. Использую TCPDF для генерации PDF файлов. Эта библиотека на ура принимает UTF-8, но мне категорически не нравятся размеры файлов.
Скажем, если я использую в документе её стандартные freesans и freeserif, то 1 страничный документ получается в 1,2 мегабайта. Это все потому, что TCPDF включает в файл PDF юникодные шрифты freeserif и freesans.
Прочитав README я понял, что размер этих шрифтов можно уменьшить, если использовать cp1251 (например).
Делается это колдовством с:
Так вот, у меня вопрос.
Может уже у кого есть эти файлы шрифтов сжатые под cp1251? Чтоб мне не заниматься шаманством?
Киньте сюда плиииз эти файлы.
PS. про $html = iconv("windows-1251","utf-8", $html); я знаю
- Блог
- Войдите или зарегистрируйтесь, чтобы отправлять комментарии
Комментарии
по-хорошему, правильная библиотека по генерации pdf должна поддерживать загрузку не всего шрифтового набора в готовую pdf-ку, а только глифов используемых в документе.
Reducing the Size of TrueType 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) все как надо. Оба шрифта добавлялись мною, алгоритм процедуры одинаковый.
- Войдите или зарегистрируйтесь, чтобы отправлять комментарии
Подскажите пожалуйста: у меня проблема с кириллицей в той же библиотеке, в конкретном шрифте (TagitCTT) она отображается кирпичами.
надо или шрифты брать качественные или имеющиеся проверять на кодировку.
первое можно начать искать здесь — http://en.wikipedia.org/wiki/Free_software_Unicode_fonts,
для второго — http://fontforge.sourceforge.net/
шрифты еще можно посмотреть здесь — http://openfontlibrary.org/ и, конечно же, шрифты идущие в поставке винды на редкость качественные.
- Войдите или зарегистрируйтесь, чтобы отправлять комментарии
в конкретном шрифте (TagitCTT) она отображается кирпичами
Скорее всего в этом шрифте нет юникода.
Я решил свою проблему путем преобразования типа шрифта из TrueType в Type1 в кодировке cp1251.
Подробнее можно почитать тут: http://www.drupal.ru/node/37044
спасибо, буду шаманить и параллельно наводить порчу на дизайнера кот выбрал этот шрифт)))
не получилось, наш проект тоже на utf-8, вместо хака я вставил $html = iconv("cp1251","utf-8", $html);. В результате кирпичи сменились на знаки "?".
Этого мало. Почитайте мое описание. Там как минимум в 4 местах нужно код хакать.
Спасибо большое всем, но проблема была решена просто: взяли проверенный times и с помощью FontLab Studio вставили нужное начертание символов))))))))))))))