TCPDF - встроенные шрифты ttf не отображаются при просмотре PDF на iPad

Я создал веб-сайт, который динамически создает PDF-файлы с помощью tcpdf и встраивает шрифты в PDF-файл. Пользователь может выбирать из ряда стандартных шрифтов, таких как Arial, Verdana и т. Д. Затем система выбирает шрифт ttf прямо с моего сервера и встраивает его, используя приведенный ниже код. Текст с этим шрифтом хорошо виден в большинстве программ просмотра PDF, но iPad/iPhone's программа просмотра не отображала его. Я загрузил новую (случайную) версию Arial.ttf в качестве теста (не уверен в различиях в файле, но теперь он, похоже, отображается нормально.

Мне нужно сделать это для ряда шрифтов, но я немного снимаю в темноте, потому что не знаю, что в шрифте может привести к тому, что он не будет встроен. Кто-нибудь знает, что в шрифтах ttf может привести к тому, что он не будет отображаться? Хорошо отображается в других средствах просмотра и отображается для встраивания в свойства документа Acrobat?

Спасибо

$fontname = $pdf->addTTFfont('/tcpdf/fonts/custom/'.$ttfFile.'.ttf', 'TrueTypeUnicode', '', 32);

// используем шрифт

$pdf->SetFont($fontname, '', $fontPoints, '', 'false');

person user1916116    schedule 07.03.2013    source источник
comment
Что вы имеете в виду, говоря «не отображать» - на самом деле текста вообще не было? И вы можете поделиться одним из этих PDF-файлов, чтобы его можно было просмотреть?   -  person David van Driessche    schedule 08.03.2013
comment
Привет, спасибо за ответ, шрифты были видны в Chrome pdf reader и в Safari, но не в стандартной программе просмотра на iPhone / iPad. Вот пример выбора шрифтов, все они видны большинству зрителей, некоторые отсутствуют на iPhone. По словам Acrobat, они, по-видимому, представляют собой «встроенные подмножества», любые идеи были бы очень полезны. s316279697.websitehome.co.uk/joe/banner790.pdf   -  person user1916116    schedule 10.03.2013
comment
Я пропустил ваш файл через предварительную проверку callas pdfToolbox (предупреждение, я связан с этой компанией) и вижу две, возможно, странные вещи. Прежде всего, ваш файл также содержит два шрифта Helvetica, которые, по-видимому, не используются на странице (и не встроены). Ваш файл также возвращается с рядом ошибок для используемого шрифта Palatino. Это шрифт, который не отображается?   -  person David van Driessche    schedule 11.03.2013


Ответы (1)


Ваш параметр для $ subset неверен. Вы устанавливаете значение «false» (в кавычках). Это должно быть логическое значение true.

    <?php
          ...
          // Wrong
          $pdf->SetFont($fontname, '', $fontPoints, '', 'false');

          // Right
          $pdf->SetFont($fontname, '', $fontPoints, '', true); 
          ...
    ?>

Почему это работает?

Потому что он включает в себя весь шрифт, а не только его подмножество. Уловка состоит в том, чтобы установить для параметра $ subset в методе $ pdf-> SetFont () значение true.

http://www.tcpdf.org/doc/code/classTCPDF.html#a471562985997be1573d387f0aeae6964

PDF работает с

iPad (IOS 7), iPhone (IOS 7), Windows 7, MACOSX 10.9.

Моя среда для создания PDF-файлов

Apache 2 на MAC 10.9, PHP 5.3.x, TCPDF v6.0.078

Файлы

Пример PDF-файла и PHP-скрипт для его создания

person Uwe Schmelzer    schedule 22.05.2014
comment
Фактически, для $ subset должно быть установлено значение false (логическое значение false, а не в кавычках), чтобы весь шрифт был встроен в документ и правильно отображался в El Capital Preview, iOS и т. Д. - person Remy Vanherweghem; 02.11.2015