2011-02-27 232 views
10

我的html-to-pdf轉換成功,但沒有特殊字符。dompdf特殊字符

下面只是一個特殊的字符,我試圖顯示,它顯示在我的Mac上的瀏覽器中,當我把它放在一個HTML文檔中。 (但不是在我的窗口框)

<?php 
require_once("../dompdf_config.inc.php"); 
$html = '&#8364;'; 
$dompdf = new DOMPDF(); $html = iconv('UTF-8','Windows-1250',$html); 
$dompdf->load_html($html); 
$dompdf->render(); 
$dompdf->stream("contract.pdf"); 
exit(0); 
?> 

我不斷收到「?」 (問號)在pdf呈現時。 我知道有很多關於特殊字符的問題,但我想我會嘗試一下,並使用我實際使用的代碼。

如果DomPdf不是推薦的html-to-pdf轉換工具,我會採取任何其他建議!

+0

在PDF中使用的字體中表示您嘗試使用的字符嗎? – Orbling 2011-02-27 21:52:44

+1

我不知道這是一個因素。我將如何發現? – coffeemonitor 2011-02-27 22:08:19

回答

3

0.6.x之前的任何內容都對ISO-8859-1編碼以外的字符提供了有限的支持。歐元在0.5.x中通過使用適當的Windows ANSI字符代碼(&#0128;)得到支持,但除此之外,您必須跳過一些PDF編碼環。

0.6.0版本更好地支持「特殊」字符。默認編碼基於Windows ANSI(由PDF 1.3規範識別的少數幾個之一)。您可以通過加載基於Unicode的字體並在dompdf中啓用Unicode並在文檔中指定該編碼來啓用更好的字符支持。

下應DOMPDF 0.6.0或更高的工作:

<!DOCTYPE html> 
 
<html> 
 
<head> 
 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> 
 
</head> 
 
<body> 
 
    <p>€</p> 
 
</body> 
 
</html>

(或偷懶只使用歐元的實體&euro;在您的測試)

有一份文件概述了需要的步驟enable Unicode support in DOMPDF。 另外閱讀overview of how to load fonts的這個答案。

13

我在轉換UTF-8 html頁面時遇到了DOMPDF的問題。 我只需增加

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 

之間< head>標籤解決了這個問題。 也許這可能是一個替代方案,如果你使用你的編碼類型進行設置。

+0

我在這裏失去了這麼多時間,不要在同一pdf實例上使用'stream()'和'output()'方法。如果你這樣做不會工作。 – dbr 2016-03-07 16:15:39

6

DOMPDF拉丁土耳其語(Türkçe)char問題,我的解決方案%100工作。

服務器requirenment控制: Server requirenment control

字符 'DEJAVU SANS單'(土耳其支持)OR:

步驟1:dompdf_config.inc.php編輯到

mb_internal_encoding('UTF-8'); 
def("DOMPDF_UNICODE_ENABLED", true); 

第2步:lib/fonts/dompdf_font_family_cache.dist.php編輯添加代碼:

'futural' => 
    array (
    'normal' => DOMPDF_FONT_DIR . 'FUTURAL', 
    'bold' => DOMPDF_FONT_DIR . 'FUTURAL', 
    'italic' => DOMPDF_FONT_DIR . 'FUTURAL', 
    'bold_italic' => DOMPDF_FONT_DIR . 'FUTURAL', 
), 

第3步:doqnload字體文件複製lib/fonts文件夾。 Download font files Linkhttp://www.2shared.com/file/k6hdky_b/fonts.html

第4步:您的代碼編輯例如:

require_once("dompdf_config.inc.php"); 
$html='<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> 
<style> 
    html{padding:-30px;} 
    body { font-family: futural; } 
</style> 
</head><body>'; 
$html.='ı İ Ş ş ç Ç ö Ö ü Ü ğ Ğ ÿ þ ð ê ß ã Ù Ñ È » ¿ İsa Şahintürk'; 
$html.='</body></html>'; 
if (isset($html)) { 
    if (get_magic_quotes_gpc()) 
    $html = stripslashes($html); 
    $old_limit = ini_set("memory_limit", "16M"); 
    $dompdf = new DOMPDF(); 
    $dompdf->load_html($html,'UTF-8'); 
    $dompdf->set_paper('a4', 'portrait');// or landscape 
    $dompdf->render(); 
    $dompdf->stream("limitless.pdf"); 
exit(0); 
} 

末完成PDF>例如enter image description here http://limitsizbilgi.com/pdf/dompdf-chartest.pdf

+0

我的服務器缺少mbstring擴展名。謝謝你的回答 – Ejaz 2016-10-20 18:20:35

4

試圖在網絡上的所有解決方案之後。我可以在不修改dompdf的情況下解決。問題出在html內容上。我只需要添加正確和適當的HTML結構並設置字體。測試v0.6.0和v0.6.1。這裏我留下代碼

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 

<head> 
    <meta http-equiv="Content-Type" content="charset=utf-8" /> 
    <style type="text/css"> 
    * { 
     font-family: "DejaVu Sans Mono", monospace; 
    } 
    </style> 
</head> 

<body>your content ćčžšđ...</body> 

</html> 
1

您必須使用另一個字符集。例如dejavu Sans Mono。添加您的代碼

<style> 
*{ 
    font-family:"DeJaVu Sans Mono",monospace; 
} 
</style> 

我告訴this視頻也是這樣。

+0

它適合我。謝謝 – PawelW 2017-11-21 21:00:42