2013-01-17 6 views
1

Я начинаю новую тему для этого, постараюсь быть максимально конкретным.HTML2PDF с TCPDF, не отображающий китайские символы в окончательном документе PDF

Это часть приложения для наших продавцов, которая позволяет им настраивать страницу с их контактной информацией, после того как они попали в submit, создается страница 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% успешными.

Пожалуйста, помогите - я работаю над этой штукой в ​​течение нескольких месяцев. Я почти готов просто сломать его и попасть в дверь.

спасибо.

+0

Должен ли быть установлен и изменен шрифт? –

ответ

2

Вы можете оказать китайский символ в вашем PDF документе с помощью

cid0jp шрифта в TCPDF.

Для справки: -

PHP код: -

http://www.tcpdf.org/examples/example_038.phps

Сгенерированный PDF: -

http://www.tcpdf.org/examples/example_038.pdf

Пожалуйста, убедитесь, файл cid0jp.php ш ould быть в каталоге шрифтов.

tcpdf/fonts/cid0jp.php 
+1

Большое вам спасибо за ваш ответ. У меня пока не было возможности проверить это в моем проекте, но планируйте либо сегодня, либо завтра. – user1152652

+0

Хорошо, наконец-то был шанс поработать над этим и планировать до тех пор, пока он не станет функциональным. Я выполнил example_038.phps на моем сервере и в своей среде, теперь получаю: TCPDF ERROR: Не могу включить файл определения шрифта: arial. Чтобы ответить на очевидное, yes arial находится в папке и да, папка полностью доступна для записи. Есть идеи? Благодарю. – user1152652

+0

Если вы уже установили право на запись в директорию 'font', добавьте разрешение на запись в каталог' cache', а также – Roopendra

0
$html2pdf = new HTML2PDF('L','LETTER','en', true, 'UTF-8', array(mL, mT, mR, mB)); 
0

Так html2pdf основана на tcpdf, но они немного по-другому: html2pdf не поддерживает китайский язык.

Однако вы можете получить javiergb.php из каталога include /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

2

В соответствии с вашими кодами:

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% рабочих кодов, чтобы иметь символы CHINESE в формате 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; 
} 

Надеюсь, он работает с ТОО в ваших кодах!

Счастливое кодирование :)

+0

Эта работа для меня тоже. Спасибо :) –

+0

Привет @MayurBhamre wow рад слышать это, я счастлив, может помочь кому-то :) – Raymond