HTML2PDF与最终的PDF文档中TCPDF不渲染中国人物(HTML2PDF with TCPDF

2019-10-17 14:22发布

我开始一个新的线程这一块,会尽量尽可能具体。

这是我们的销售人员一个应用程序,允许他们自定义页面与他们的联系信息,他们击中提交后,PDF页面被创建,然后将其连接到一个更大的文档的结尾的部分。

该文件的第一页也被动态地从相同的形式,他们填写创建。 他们按提交后,2个PDF文件创建,头版和封底,然后两个页面连接到一个较大的文档创建一个单一的报告。

除非他们进入中国字符一切都很正常,然后我得到的是这样的乱码 - (è'¨é‡•ä¿•电子•æμ•C <)。 该文件仍然是这样的甚至在它与较大的文件合并。

我已经尝试一个中的每个文件夹TCPDF的字体想尽一切可能的情况下(似乎)使用Unicode字体,用我自己创建的字体和一个。 我在一个总损失,并且已经有一段时间了。 我觉得我一直在几乎所有网站提到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%。

请帮助 - 我一直在做这件事情和关闭数月。 我几乎准备,只是废了打门。

谢谢。

Answer 1:

根据你的代码:

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;
}

但愿它也能工作在你的代码有!

编码愉快:)



Answer 2:

您可以使用您的PDF文档中渲染中国字符

在TCPDF cid0jp字体。

供你参考 :-

PHP代码: -

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

生成的PDF: -

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

请确保文件cid0jp.php应该在字体目录中。

tcpdf/fonts/cid0jp.php 


Answer 3:

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


Answer 4:

所以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



文章来源: HTML2PDF with TCPDF not rendering Chinese characters in final PDF document