带特殊字符的TCPDF HTML显示空PDF文件

时间:2010-11-10 06:40:54

标签: php kohana-3 tcpdf

我正在使用TCPDF库版本:5.9.011。我正在尝试以PDF格式执行HTML布局。我试过的例子提供了site

$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

中指定的中间内容

11 个答案:

答案 0 :(得分:11)

$ pdf-&gt; writeHTML

之前的

$html = utf8_decode($html);

也许

$html = utf8_encode($html);

答案 1 :(得分:9)

正如其他人已经提到的,你需要更改构造函数,设置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);

有效!

答案 2 :(得分:5)

你需要更改构造函数,设置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。

Krish

答案 3 :(得分:1)

我也有类似的问题。我有一个从HTML文件生成pdf,其中包含多个列表和一个刻度符号作为项目符号。

我尝试了所有这些解决方案但没有工作,我不得不使用一张图片,但它正在减慢这个过程。 最后我遇到了这个:http://www.tcpdf.org/examples/example_055.pdf,最后有一个&#34; zapfdingbats&#34;字体有很多符号。

所以我用<span>3<span>替换了我的所有刻度图像,并将此元素的字体设置为font-family="zapfdingbats",并且它有效。它有点hacky,但效果很好。

答案 4 :(得分:1)

您可以将文本放在变量中并使用php函数进行转换

UTF-8特征的例子

android:autoLink="all"
android:clickable="true"
android:linksClickable="true"

其他功能使用php reference guide

答案 5 :(得分:1)

对我来说,使用 UTF-8 编码保存文件。无需更改 new TCPDF() 或添加 utf8_decode($html)。现在可以正常生成带有特殊字符的文本。

答案 6 :(得分:0)

您使用的是最新版本的TCPDF.Follow步骤here。它应该工作

答案 7 :(得分:0)

我有类似的问题,我以这种方式解决了所有问题:

$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 :(得分:0)

对我来说,这解决了这个问题:

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

我希望它会帮助某人

答案 9 :(得分:0)

我正在将HTML内容写为pdf,并且必须打印复选标记符号。这是我所做的,并且有效。

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

然后在我的HTML中,我在下面的代码中添加了选中标记

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

希望如此

答案 10 :(得分:0)

将SetFont与dejavusans结合使用,以使用特殊字符在pdf中以pdf格式打印html,例如ŐŰ

还要确保在html中不需要使用字体家族,其他希望字体家族将覆盖dejavusans,并且您不会得到想要的东西。

$html = '<h1>HTML Example</h1>
<h2>List</h2>
Some special characters: &lt; € &euro; &#8364; &amp; è &egrave; &copy; &gt; \\slash 
\\\\double-slash \\\\\\triple-slash
more char ő Ő ű Ű
';
$pdf->SetFont('dejavusans');
$pdf->writeHTML($html, true, false, true, false, '');
$pdf->Output('output.pdf', 'D');

希望这会有所帮助