php
  • dompdf
  • chinese-locale
  • 2015-02-10 274 views 3 likes 
    3

    我正嘗試使用dompdf生成將包含中文字符的PDF。 這裏是我的代碼:DomPDF爲中文字符生成

    require('dompdf/dompdf_config.inc.php'); 
    $dompdf = new DOMPDF(); 
    mb_internal_encoding('UTF-8'); 
    def("DOMPDF_UNICODE_ENABLED", true); 
    $html = ' <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> 
    <style> 
        *{ font-family: DejaVu Sans, font-size: 12px;} 
    </style> </head> <body> 
    忠烈祠 
        </body> 
    </html>'; 
    $dompdf->load_html($html); 
    $dompdf->render(); 
    $output = $dompdf->output(); 
    $filename = 'a.pdf'; 
    $path = $filename; 
    file_put_contents($path, $output); 
    

    問題是生成的PDF只顯示方塊,當我與鍍鉻或Adobe Reader打開它,但它在Mozilla Firefox看起來確定。

    任何消耗?

    +0

    https://github.com/barryvdh/laravel-dompdf/issues/79提到第二個答案...可能會幫助你.. – 2015-02-13 07:51:44

    +0

    感謝你的回答,但我去了所有在谷歌上找到的答案。我的項目的問題是文本編輯器上的編碼(netbeans在這一點上) – 2015-02-19 14:37:41

    回答

    1

    首先,移動def("DOMPDF_UNICODE_ENABLED", true);高於要求,因爲包含在dompdf中的def函數只定義常數(如果它不存在)。當你包含dompdf_config.inc.php時,那個常量將被設置。另外,請使用define

    其次,你需要一個不同的字體。 dompdf附帶的DejaVu字體不支持CJK。有關概述,請閱讀我對Dompdf and set different font-family的回答。

    如果您目前沒有字體,可以嘗試查找Firefly Sung。無論你決定使用它的字體應該是TTF爲了dompdf使用它。

    這裏是通過@字體面CSS規則中使用螢火蟲宋爲例,無需安裝:

    <!DOCTYPE html> 
     
    <html> 
     
    
     
    <head> 
     
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
     
        <style> 
     
        @font-face { 
     
         font-family: 'Firefly Sung'; 
     
         font-style: normal; 
     
         font-weight: 400; 
     
         src: url(http://eclecticgeek.com/dompdf/fonts/cjk/fireflysung.ttf) format('truetype'); 
     
        } 
     
        * { 
     
         font-family: Firefly Sung, DejaVu Sans, sans-serif; 
     
        } 
     
        </style> 
     
    </head> 
     
    
     
    <body> 
     
        <div>忠烈祠</div> 
     
    </body> 
     
    
     
    </html>

    +0

    我用dompdf0.7試過了上面的html,但仍然是作爲框的字符。我在ubuntu 16.04和PHP 7.0中測試並啓用了所有必需的擴展。我究竟做錯了什麼? – Suraj 2016-10-16 15:53:51

    +0

    @Suraj Dompdf不包括支持所有開箱即用的字符。你是否安裝了支持角色的字體? – BrianS 2016-10-17 14:20:29

    +0

    我使用的是上面完全相同的代碼。我認爲它不需要任何安裝,因爲字體src url是外部的。請指教。 – Suraj 2016-10-18 14:45:53

    相關問題