iT邦幫忙

0

使用TCPDF 轉pdf 中文亂碼

  • 分享至 

  • xImage

目前使用TCPDF將HTML轉PDF,遇到HTML pre中的中文字會變成亂碼,在pre外的文字會正常顯示,如下:
<pre>測試</pre>=:??

<table><tr><td>測試</td></tr></table>=>測試

爬文後使用的方法:
droidsansfallback.php、droidsansfallback.z和droidsansfallback.ctg.z 放入 vendor/tecnickcom/tcpdf/fonts/目錄下,並在fonts資料夾中建立一個檔案,內容如下

require_once ('../tcpdf.php');
$font=TCPDF_FONTS::addTTFfont('DroidSansFallback.ttf');

但這對pre內容沒有效果,想請問原因是甚麼?。

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

0
淺水員
iT邦大師 6 級 ‧ 2022-12-02 21:39:44
最佳解答

剛剛測試了一下
判斷是遇到 pre 他會想用等寬字型去處理
但是預設的等寬字型並沒有中文
可以用 setDefaultMonospacedFont method 去設定預設的等寬字型
把它變成有中文的字型即可

以下是範例

<?php
require('vendor/tecnickcom/tcpdf/tcpdf.php');
$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
$pdf->AddPage();
$pdf->AddFont('imingcp800');
$pdf->setDefaultMonospacedFont('imingcp800'); //最好找真正的等寬字型,這邊偷懶
$pdf->SetFont('imingcp800');
$pdf->writeHTML('<h3>測試<h3><p>測試</p><pre>測試</pre>');
$pdf->Output();

補充

上面範例的字型我是抓一點明體CP
然後用以下程式碼把自訂字型匯入 TCPDF

<?php
require('./vendor/tecnickcom/tcpdf/tcpdf.php');
TCPDF_FONTS::addTTFfont('I.MingCP-8.00.ttf');

其他字型也可以試試看
只是印象中 TCPDF 有點挑字型
有時候要多嘗試幾個

qpalzm iT邦新手 1 級 ‧ 2022-12-05 08:11:09 檢舉

好的 謝謝大大~

我要發表回答

立即登入回答