Tcpdf кириллица utf 8

на понятном языке

Столкнулся недавно с задачей формирования 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

Проверьте справедливость следующих пунктов:

  1. Вы используете unicode (true).
  2. Вы используете нужную кодировку (UTF-8).
Читайте также:  Depart from facility to service provider

Вы используете шрифт, поддерживающий кириллицу (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.
Все, что у них описано по поводу уменьшения размеров шрифтов не работает. Уже убил целый день на метод проб и ошибок.

Читайте также:  Error cannot find symbol java

если ты про вычленение 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);. В результате кирпичи сменились на знаки "?".

Читайте также:  Ulefone armor отзывы владельцев

Этого мало. Почитайте мое описание. Там как минимум в 4 местах нужно код хакать.

Спасибо большое всем, но проблема была решена просто: взяли проверенный times и с помощью FontLab Studio вставили нужное начертание символов))))))))))))))

Rate this post

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *