目前使用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內容沒有效果,想請問原因是甚麼?。
剛剛測試了一下
判斷是遇到 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 有點挑字型
有時候要多嘗試幾個