HTML2PDF с TCPDF не отображает китайские иероглифы в окончательном документе PDF
Я начинаю новую тему для этого, постараюсь быть как можно более конкретным.
Это часть приложения для наших менеджеров по продажам, которая позволяет им настраивать страницу со своей контактной информацией, после того как они нажимают кнопку "Отправить", создается страница PDF, которая затем прикрепляется к концу более крупного документа.
Первая страница документа также динамически создается из той же формы, которую они заполняют. После нажатия кнопки отправки создаются 2 файла PDF, первая страница и задняя страница, затем обе страницы прикрепляются к большему документу, создавая один отчет.
Все отлично работает, если они не вводят китайские иероглифы, тогда все, что я получаю, это такие мусорные символы, как этот - (质釕俕试æμ•ç¨‹). Документ по-прежнему выглядит так даже до того, как он будет объединен с документом большего размера.
Я пробовал все возможные сценарии (кажется) от использования шрифта Unicode, до использования собственного созданного шрифта и один за другим, пробуя каждый из шрифтов в папке TCPDF. Я в полной растерянности и уже некоторое время. Я чувствую, что я был на почти каждом веб-сайте, который упоминает TCPDF.
Вот код, который создает заднюю страницу, возвращаясь к основным командам, с которых я начал. Я надеюсь, что это простая команда, которую я здесь пропускаю:
require_once(dirname(__FILE__).'/html2pdf.class.php');
try
{
$html2pdf = new HTML2PDF('L','LETTER','en', false, 'ISO-8859-15', array(mL, mT, mR, mB));
$html2pdf->setDefaultFont('Arial');
$html2pdf->writeHTML($html, isset($_GET['vuehtml']));
//Line below saves PDF to file
$html2pdf->Output('created/'.$lastname[1].'_html2pdf.pdf', 'F');
}
catch(HTML2PDF_exception $e) {
echo $e;
}
И для чего это стоит, запустить сервер Centos 5.5 для создания документов. Заранее спасибо.
После изучения этой проблемы с HTML2PDF мне сказали, что шрифт arialuni.ttf должен поддерживать все необходимые мне символы. При этом HTML2PDF не будет загружать этот шрифт, когда я использую его в своем скрипте, показанном ниже.
require_once(dirname(__FILE__).'/html2pdf.class.php');
try
{
$html2pdf = new HTML2PDF('L','LETTER','en', false, '', array(mL, mT, mR, mB));
$html2pdf->pdf->AddTTFFont('ARIALUNI.TTF');
$html2pdf->pdf->setFont('arialuni');
$html2pdf->writeHTML($html, isset($_GET['vuehtml']));
//Line below sends output to the screen only
//$html2pdf->Output('exemple00.pdf');
//Line below saves PDF to file
$html2pdf->Output('created/'.$lastname[1].'_html2pdf.pdf', 'F');
}
catch(HTML2PDF_exception $e) {
echo $e;
}
* Все, что я могу думать, это то, что синтаксис не на 100% правильный. Я запустил tt2fm и makefont, чтобы получить файлы, но не чувствую, что эти процедуры были на 100% успешными.
Пожалуйста, помогите - я работал над этой вещью несколько месяцев. Я почти готов просто сломать это и поразить дверь.
Спасибо.
4 ответа
Вы можете отобразить китайский иероглиф в вашем документе PDF с помощью
шрифтcid0jp в TCPDF.
Для справки:-
Код PHP:-
http://www.tcpdf.org/examples/example_038.phps
Сгенерированный PDF:-
http://www.tcpdf.org/examples/example_038.pdf
Пожалуйста, убедитесь, что файл cid0jp.php должен находиться в каталоге шрифтов.
tcpdf/fonts/cid0jp.php
По вашим кодам:
require_once(dirname(__FILE__).'/html2pdf.class.php');
try
{
$html2pdf = new HTML2PDF('L','LETTER','en', false, 'ISO-8859-15', array(mL, mT, mR, mB));
//$html2pdf->setDefaultFont('Arial'); //Please remove this
$html2pdf->setDefaultFont('stsongstdlight'); //And change with this, it works 101% for me
$html2pdf->writeHTML($html, isset($_GET['vuehtml']));
//Line below saves PDF to file
$html2pdf->Output('created/'.$lastname[1].'_html2pdf.pdf', 'F');
}
catch(HTML2PDF_exception $e) {
echo $e;
}
... И вот мои 101% рабочие коды, чтобы иметь символы КИТАЙСКОГО в выводе pdf:
<?php
require_once ROOT_DIRECTORY.'/{it's your own location where you put the class at}/html2pdf-4.4.0/html2pdf.class.php'; //ROOT DIRECTORY is my own "defined" so do not use this line.
/* or use this:
* require_once(dirname(__FILE__).'/html2pdf.class.php');
* it depends on what you need
*/
try
{
$html2pdf = new HTML2PDF('L', 'A6', 'en', true, 'UTF-8', 0); //I'm using UTF-8 //Also I'm working on A6 page in my project here, so if you need to have A4 size change A6 back to A4 or change to the size you need
$html2pdf->pdf->SetDisplayMode('fullpage');
$html2pdf->setDefaultFont('stsongstdlight'); //this is all you need to have the CHINESE character.
$content = ob_get_clean();
$html2pdf->writeHTML($content);
$html2pdf->Output('Sticker-'.$this->invNumber.'-'.$this->custCode.'.pdf');
exit;
}
catch(HTML2PDF_exception $e) {
echo $e;
exit;
}
Надеюсь, что он работает ТОО в ваших кодах там!
Удачного кодирования:)
$html2pdf = new HTML2PDF('L','LETTER','en', true, 'UTF-8', array(mL, mT, mR, mB));
Так html2pdf
основывается на tcpdf
, но они немного отличаются: html2pdf не поддерживает китайский язык.
Тем не менее, вы можете получить javiergb.php
из каталога включения /tcpdf/fonts/
, Затем вы копируете этот файл в html2pdf/_tcpdf5.xxxx/fonts/
каталог.
После этого вам просто нужно добавить строку $html2pdf->setDefaultFont('javiergb');
в ваш html2pdf, настроенный следующим образом:
$html2pdf = new HTML2PDF('P', 'A4', 'en');
$html2pdf->setDefaultFont('javiergb');
$html2pdf->writeHTML($html);
$html2pdf->Output('example_zh_cn.pdf');
Вы можете посмотреть мою вилку: https://github.com/cychai/html2pdf