【问题标题】:How to display HTML Ohm special character in TCPDF?如何在 TCPDF 中显示 HTML Ohm 特殊字符?
【发布时间】:2020-07-27 22:36:08
【问题描述】:

我正在使用 TCPDF 从 HTML 代码生成 PDF,但我无法正确呈现某些 HTML 特殊字符。这是我的准系统代码:

require_once('../libraries/tcpdf_6_0_020/tcpdf/tcpdf.php');

// create new PDF document
$pdf = new TCPDF('P', PDF_UNIT, 'LETTER', true, 'UTF-8', false);

// add a page
$pdf->AddPage();

$output = 'this is a special character: Ω';

//echo $output;die();

$pdf->writeHTML($output, true, false, false, false, '');

//Close and output PDF document
$pdf->Output('generated pdf.pdf', 'I');

上面的输出是:

this is a special character: ?

这里有很多关于同一主题的问题,其中大多数说要将构造函数更改为以下内容:

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

我试过了,但是输出变成了:

this is a special character: Ω

我应该怎么做才能使 HTML 特殊字符正确呈现?

【问题讨论】:

  • 使用$pdf->setFont(...)设置Unicode字体。
  • @JoopEggen 我在 TCPDF 构造函数下面添加了$pdf->SetFont('times', 'BI', 20, '', 'false');,但它仍然显示问号。

标签: tcpdf


【解决方案1】:

试试这个

require_once('tcpdf/tcpdf.php');

$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);

$pdf->SetFont('dejavusans', '', 10);

$pdf->AddPage();

$html = "this is a special character: Ω";

$pdf->writeHTML($html, true, false, true, false, '');

$pdf->lastPage();

$pdf->Output('test.pdf', 'I');

【讨论】:

  • 我试过$output = $pdf->unhtmlentities('this is a special character: Ω');,但不幸的是它仍然输出?
  • 我从这个页面获得了欧元字符代码 (8364):tcpdf.org/examples/example_006.phps,它在我的示例中正确呈现。所以就好像 TCPDF 不知道如何渲染某些符号,例如欧姆符号?
  • 谢谢,但您不只是将 html 回显到页面而不是生成 PDF 吗?如果将 HTML 回显到页面,欧姆符号显示正常,但是当我将其输出为 PDF 时,它会显示问号。
  • @Nate 我更新了创建 pdf 的代码。你的问题出在我认为的 SetFont 中
  • @Nate "Deja Vu Sans Mono 是 Deja Vu 字体家族的一部分,是可用的最完整的 Unicode 字体之一。这意味着您可以访问各种特殊符号,包括数学符号比如箭头、运算符和特殊字母。” ;)
【解决方案2】:

对我来说解决方案是

html_entity_decode(utf8_encode('my string'));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-01
    • 1970-01-01
    相关资源
    最近更新 更多