TCPDF HTML со специальными символами отображает пустой файл PDF

Я использую версию библиотеки TCPDF: 5.9.011. Я пытаюсь выполнить HTML-макет как PDF. Для чего я попытался с примером предоставить сайт

$html = '<h1>HTML Example</h1>
<h2>List</h2>
Some special characters: &lt; € &euro; &#8364; &amp; è &egrave; &copy; &gt; \\slash \\\\double-slash \\\\\\triple-slash
';
// output the HTML content
$pdf->writeHTML($html, true, false, true, false, '');

//Close and output PDF document
$pdf->Output('example_006.pdf', 'I');

По-видимому, обнаружено, что сгенерированный PDF файл по умолчанию содержит только верхний и нижний колонтитулы по умолчанию с отсутствием среднего содержимого.

Однако, если я удалю специальные символы, например:

$html = '<h1>HTML Example</h1>
<h2>List</h2>
Some special characters:
';

PDF получает свое среднее содержимое, указанное в $html

Ответ 1

перед строкой $pdf- > writeHTML

$html = utf8_decode($html);

может быть

$html = utf8_encode($html);

Ответ 2

Как уже упоминалось другими людьми, вам нужно сменить конструктор, установить UTF-8 flase и изменить новый charshet, как показано ниже:

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

Только изменение этого параметра не всегда будет препятствовать получению пустой страницы. Чтобы предотвратить получение пустой страницы: измените тип шрифта на "helvetica" или другой.

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

Это работает!

Ответ 3

вам нужно сменить конструктор, установить UTF-8 flase и изменить новый charshet, как показано ниже:

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

В приведенном выше примере я устанавливаю кодировку ISO-8859-1 вместо UTF-8, и я изменяю true на false.

Криш

Ответ 4

У меня тоже была аналогичная проблема. Мне нужно было создать pdf файл из HTML файла с несколькими списками и знак галочки в качестве маркера.

Я пробовал все эти решения, но никто не работал, мне приходилось использовать изображение, но это замедляло процесс. Наконец, я пришел к этому: http://www.tcpdf.org/examples/example_055.pdf, в самом конце есть шрифт "zapfdingbats" с большим количеством символов.

Итак, я заменил все свои тиковые изображения на: <span>3<span> и установил шрифт этого элемента в font-family="zapfdingbats", и он сработал. Он немного взломан, но работает хорошо.

Ответ 5

Вы можете поместить текст в переменную и использовать функцию php для преобразования

пример для UTF-8 caracter

    $html = '<h1>HTML Example</h1>
<h2>List</h2>

Some special characters: € è ù à \\ \\\
';
// output the HTML content
$pdf->writeHTML(utf8_encode($html), true, false, true, false, '');

//Close and output PDF document
$pdf->Output('example_006.pdf', 'I');

для других функций используйте справочник по php

Ответ 6

Используется последняя версия TCPDF. Ниже описаны шаги здесь. Он должен работать

Ответ 7

У меня была аналогичная проблема, и я исправил все следующим образом:

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

и в конце:

$pdf->writeHTMLCell(0, 0, '', '', utf8_decode($html), 0, 1, 0, true, '', true);

Ответ 8

Для меня это устранило проблему:

$this->pdf->AddPage('P', 'A4');
$this->pdf->deletePage($this->pdf->getNumPages());

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

Ответ 9

Я пишу HTML-контент в PDF и должен напечатать символ галочки. Вот что я сделал, и это сработало.

$pdf->SetFont('zapfdingbats');
$pdf->SetFont('helvetica'); // for regular content

а затем в моем HTML я добавил галочку с кодом ниже

<span style="font-family: zapfdingbats;">4</span>

Надеюсь это