2013-10-15 3 views
7

Я программист на веб-сайте, не имеющий глубоких знаний о шрифтах, и изо всех сил стараюсь, чтобы TCPDF включил наш пользовательский шрифт OpenType. Мы купили файлы шрифтов OpenType (.oft), которые не защищены каким-либо DRM.TCPDF, «Не могу включить файл определения шрифта» с шрифтами OpenType

Много вопросов относительно этого сообщения об ошибке в конечном итоге получают тот же совет. Я установил правильные права доступа к файлам для папок, используемых TCPDF (755), и у меня нет никаких проблем с использованием addTTFfont() в том числе .ttf шрифты TrueType как так:

$pdf->addTTFfont('/path-to-font/DejaVuSans.ttf', 'TrueTypeUnicode', '', 32);

Так я сделал вверх по следующий код, чтобы включить наш тип OpenFont. Документация addTTFfont(), по-видимому, указывает на поддержку параметров OpenTypeUnicode и OpenType.

$pdf->addTTFfont('/path-to-font/customfont.otf', 'OpenTypeUnicode', '', 96);

Какие результаты в:

TCPDF ERROR: Could not include font definition file:

Мы используем TCPDF v6.0.020 и я читал TCPDF Fonts information page без везения до сих пор. Я заметил, что TCPDF также имеет функцию addFont()(documentation here), которая кажется более очевидной для использования, поскольку она не содержит ссылок на любой тип шрифта. Однако мне не удалось заставить эту функцию работать с небольшой документацией, которую она имеет.

Любая помощь будет принята с благодарностью.

+0

OTF это другой формат TTF – kurdtpage

ответ

8

Вы уверены, что получили эту ошибку при вызове addTTFfont()? Причина, по которой я спрашиваю, заключается в том, что я проверил TCPDF-код (просто сделал глобальный поиск в «Не мог включить файл определения шрифта»), и это сообщение появляется только в методе addFont().

Эти два метода могут быть немного запутанным, но я написал себе некоторые примечания несколько месяцев назад, что я буду частично воспроизвести ниже в надежде, что это поможет вам как-то:

  • addTTFfont() - Первичный функция этого метода заключается в преобразовании шрифта из TTF (или OTF) в «сырую» версию, требуемую TCPDF. Как эта функция реализована, теоретически вы можете использовать ее в качестве основного метода добавления шрифтов в документ. Сначала он проверит папку с шрифтом tcpdf, и если конвертированные файлы там не будут, он продолжит преобразование. Это всего лишь немного более накладные расходы, но все же не мой предпочтительный метод добавления шрифтов в файлы, так как вам нужно знать, какой стиль шрифта вы конвертируете для успешного процесса работы. IMO, лучше использовать этот метод для предварительного конвертирования любых шрифтов, которые вы планируете использовать, и просто используйте addFont() для добавления «необработанных» версий в документ.

  • AddFont() - Это добавляет к документу «необработанный» (т. Е. Уже преобразованный) шрифт, что означает, что он доступен для записи текста.

  • SetFont() - Здесь задается шрифт для следующего фрагмента текста, который вы пишете.

Так что я хотел бы использовать addTTFfont() предварительно преобразовать шрифт в «сырой» вариант, а затем использовать addFont() и setFont() в коде, который на самом деле создает PDF.

Если addFont() не работает с сообщением об ошибке, значит, файл определения шрифта не найден. Имейте в виду, что если вы вызываете addFont() с набором стилей ('i', 'b', 'bi' и т. Д.), Все, что он делает, добавляет это к имени файла (перед расширением).

Самое главное, что вы должны убедиться, что ваш звонок в addTTFFont() создает «сырые» файлы шрифтов и сохраняет их в папке шрифтов. Должно быть три файла в стиле, с расширениями .php, .z и .ctg.z. Поэтому, если вы изменили шрифт blah.ttf, вы получите blah.php, blah.z и blah.ctg.z. Если вы конвертируете blah bold.ttf, TCPDF выяснит, что это жирный шрифт и добавьте «b» в конец имен файлов: blahb.php, blahb.z и blahb.ctg.z.

Надеюсь, здесь будет какой-то самородок, который поможет! Удачи!

+0

Да, я уверен. Я пытался объяснить свою ситуацию, насколько мог. Когда я проверяю свой сервер после ошибки, я всегда получаю тот же результат; один файл 'customfont.z', но не файл' customfont.php'. Если я правильно понимаю TCPDF, описанная мной ошибка указывает на неудачное создание файла 'customfont.php' (definition). – Seroczynski

+0

Правильно, вы должны получить три файла (.php, .z и .ctg.z). Удивительно странно, что addTTFfont() создавал бы только файл .z, а не два других. Возвращает ли функция имя шрифта (указывает на успех) или логическое значение false (указывает на ошибку)? – JamesG

+0

Обновление: я просто попытался преобразовать файл TTF, который не понравился TCPDF, и создал файл .z, но ни один из двух других файлов. Функция вернула FALSE. В моем конкретном случае это не удалось при проверке «snft version» по строке 365 в tcpdf_fonts.php (я нахожусь в версии 6.0.039, но я не думаю, что этот файл сильно изменился совсем недавно). Честно говоря, хотя автор сделал невероятную работу с TCPDF, аспект преобразования шрифта был проклятием моей жизни, поэтому я использовал альтернативные способы преобразования моих шрифтов. – JamesG

0

Чтобы решить эту проблему с генерацией шрифта.

Убедитесь, что все пути верны.

Используйте этот link

Не забудьте поместить папку make_font внутри папки из html2pdf

Помните о правильном пути: html2pdf.class.php внутри папки make_font в index.php

или

Если у вас есть другие проблемы - шрифт: Не удалось включить файл определения шрифта:

Это проблема правильного названия вашего нового шрифта.

Например, используя при генерации PDF:

Правильно: $html2pdf->addFont('lato i', '', 'latoi.php');

Некорректное: $html2pdf->addFont('lato', '', 'latoi.php');

Помните, что есть только 2 файлы, сгенерированные:

latoi.php

latoi.z

Вам не нужен ctg-файл.

Я надеюсь, что это поможет

 Смежные вопросы

  • Нет связанных вопросов^_^