Подтвердить что ты не робот

Создание PDF с tcpdf показывает пробел на iphone

Я использую tcpdf для создания PDF из HTML. Все работает нормально, и когда я просматриваю PDF файл на своем компьютере, я вижу это просто прекрасно, но по какой-то причине, когда я смотрю на PDF файл на своем iPhone, он отображается пустым. Все, что я вижу, это границы, которые я создал, которые содержат значения в них, но нет значений.

Вот мой код

require_once('/tcpdf/tcpdf/config/lang/eng.php');
require_once('/tcpdf/tcpdf/tcpdf.php');
$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);
$pdf->setLanguageArray($l);
$pdf->SetFont('dejavusans', '', 10);
$pdf->AddPage();
$html = file_get_contents('http://www.website.com/invoice.php?invoice_id='.$invoice_id);
$pdf->writeHTML($html, true, false, true, false, '');
$pdf->lastPage();
$pdf->Output('/html/admin/emailattachements/invoice.pdf', 'F');

В этой последней строке. Я копирую PDF в этот каталог, когда я возьму его позже по электронной почте script и отправит его клиенту.

Blank PDF

Изменить: SOLVED

Я обнаружил, что это был шрифт, который я использовал для создания PDF файла. iPhone не может читать dejavusans:) Я изменил его на "времена", и он отлично работает

Изменить: обновить

С этой статьи мне пришлось создать еще много PDF файлов с tcpdf, и пока я не могу объяснить, почему некоторые шрифты не работали, а другие, где я недавно применял некоторые предложения по адресу http://www.tcpdf.org/fonts.php и применяется

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

Добавив шрифт вручную и установив путь к файлу шрифта и загрузив файл вручную, я смог получить существующий шрифт, который не работал, и фактически заставить их работать.

4b9b3361

Ответ 1

Измените следующие строки:

$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);

$pdf->SetFont('dejavusans', '', 10);

To:

$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, false, 'ISO-8859-1', false);

$pdf->SetFont('helvetica', '', 10, '', true);

И затем проверьте.

Ответ 2

Не уверен, как он работает для вас без метода AddFont, но у меня была такая же проблема, и добавление четвертого параметра $subset = false исправляет его.

$subset (mixed), если true встраивается только подмножество шрифта (только для магазинов информация, связанная с используемыми символами); если false embedd full шрифт; если "default" использует значение по умолчанию, используя setFontSubsetting(). Этот параметр действителен только для TrueTypeUnicode шрифты. Если вы хотите, чтобы пользователи меняли документ, установите это параметр - false. Если вы подмножите шрифт, человек, который получает ваш PDF должен иметь тот же самый шрифт, чтобы вносить изменения в ваш PDF. Размер файла PDF также будет меньше, потому что вы вставляют только часть шрифта.

$pdf->AddFont('dejavusans', '', 'dejavusans', false);
$pdf->AddFont('dejavusans', 'B', 'dejavusans', false);

$pdf->SetFont('dejavusans', '', 10);

dejavusans исправляет ряд проблем с многобайтовыми символами, поэтому невозможно простое обращение к helvetica. Сделав это изменение, мы обнаружили, что PDF более чем вдвое больше.

Это одна и та же идея, как и @user3548394, но нужно только сделать это изменение.

Ответ 3

Проверьте тип шрифта, который вы используете, как html, но он не будет возвращаться.

Ответ 4

Создайте pdf со статическим текстом и проверьте.