當使用 dompdf 生成 PDF 時,如果出現亂碼問題,可以嘗試以下方法解決:
確保文檔編碼為 UTF-8: 在創建 DOMPDF 對象時,設置文檔的默認編碼為 UTF-8。例如:
$dompdf = new Dompdf('P', 'mm', 'A4', true, 'UTF-8');
設置 HTML 內容的編碼:
在將 HTML 內容傳遞給 DOMPDF 之前,確保 HTML 內容的編碼也是 UTF-8。可以使用 PHP 的 mb_convert_encoding()
函數進行轉換。例如:
$html = '<html><head><meta charset="UTF-8"></head><body>' . $content . '</body></html>';
$dompdf->loadHtml(mb_convert_encoding($html, 'HTML-ENTITIES', 'UTF-8'));
設置輸出文件的編碼: 在將 PDF 輸出到瀏覽器或保存到文件時,設置輸出文件的編碼為 UTF-8。例如:
$dompdf->render();
$dompdf->stream('document.pdf', ['Attachment' => 0, 'Content-Type' => 'application/pdf; charset=UTF-8']);
檢查源代碼中的字符編碼: 確保你的 HTML、CSS 和 PHP 源代碼中的字符編碼都是 UTF-8。可以使用文本編輯器(如 Notepad++ 或 Visual Studio Code)檢查和更改文件編碼。
使用 meta 標簽設置頁面編碼: 在 HTML 頭部添加 meta 標簽,指定頁面編碼為 UTF-8。例如:
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
嘗試以上方法后,如果問題仍然存在,請檢查您的代碼和文檔,確保沒有遺漏的字符編碼設置。在某些情況下,可能需要更深入地調查源文檔以確保所有字符都是正確的編碼。