14

我正在使用 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

4

12 回答 12

14

在$pdf->writeHTML行之前

$html = utf8_decode($html);

也许

$html = utf8_encode($html);
于 2014-08-08T15:48:20.343 回答
9

正如其他人已经提到的,您需要更改构造函数,设置 UTF-8 flase 并更改新的字符集,如下所示:

$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, false, 'ISO-8859-1', false);

仅更改此设置并不总是会阻止获得空白页。为防止出现空白页:将字体类型更改为“helvetica”或其他。

$pdf->SetFont('helvetica', '', 11, '', true);

有用!

于 2013-02-09T15:18:16.170 回答
5

您需要更改构造函数,设置 UTF-8 flase 并更改新字符集,如下所示:

$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, false, 'ISO-8859-1', false);

在上面的示例中,我设置了编码 ISO-8859-1 而不是 UTF-8,并将 true 更改为 false。

克里什

于 2011-05-26T07:08:37.663 回答
3

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

我尝试了所有这些解决方案,但都没有奏效,我不得不使用一张图片,但它减慢了这个过程。最后我遇到了这个:http : //www.tcpdf.org/examples/example_055.pdf,最后有一个带有很多符号的“zapfdingbats”字体。

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

于 2016-01-22T10:29:53.977 回答
3

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

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

然后在我的 HTML 中添加了带有以下代码的复选标记

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

希望这个

于 2019-01-21T17:41:39.450 回答
1

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

于 2021-01-08T09:44:14.760 回答
0

您正在使用最新版本的 TCPDF 。按照此处提到的步骤操作。它应该工作

于 2010-11-10T07:27:23.483 回答
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);
于 2015-05-23T11:14:15.327 回答
0

您可以将文本放入变量中并使用 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 参考指南

于 2016-03-30T14:07:27.987 回答
0

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

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

我希望它会帮助某人

于 2017-04-06T12:53:09.707 回答
0

我必须在以 UTF8 字符结尾的字符串之后添加单个空格(而不是在整个<p>标签之后):

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

utf_decode()utf_encode()没有工作。

于 2019-03-12T15:07:36.390 回答
0

将 SetFont 与 dejavusans 一起使用,以使用特殊字符在 pdf 中打印,如 ő Ő ű Ű

还要确保在 html 中您不需要使用 font-family 其他希望字体系列会覆盖 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');

希望这会有所帮助

于 2020-04-04T08:25:28.787 回答