TCPDF HTML со специальными символами отображает пустой файл PDF - PullRequest
12 голосов
/ 10 ноября 2010

Я использую версию библиотеки 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

Ответы [ 10 ]

11 голосов
/ 08 августа 2014

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

$html = utf8_decode($html);

возможно

$html = utf8_encode($html);
9 голосов
/ 09 февраля 2013

Как уже упоминалось другими людьми, вам нужно изменить конструктор, установить 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);

Работает!

5 голосов
/ 26 мая 2011

вам нужно изменить конструктор, установить 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 и меняюот истинного до ложного.

Криш

1 голос
/ 30 марта 2016

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

примера для символа UTF-8

    $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

1 голос
/ 22 января 2016

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

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

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

0 голосов
/ 12 марта 2019

Мне пришлось добавить один пробел после строки, заканчивающейся символом UTF8 (не после целого тега <p>):

$name = '<p style="color:red;font-weight:bold;font-size:34pt;text-align:center;">Jaźń Jeżę </p>';

utf_decode() и utf_encode() не работали.

0 голосов
/ 21 января 2019

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

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

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

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

Надеюсь, это

0 голосов
/ 06 апреля 2017

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

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

Надеюсь, это кому-нибудь поможет

0 голосов
/ 23 мая 2015

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

$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);
0 голосов
/ 10 ноября 2010

Вы используете последнюю версию TCPDF. Следующие шаги упомянуты здесь . Должно работать

...