2014-06-26 40 views
1

我使用從github下載的DOMPDF v.0.6.1將HTML轉換爲PDF文件。我在配置中添加自定義字體時遇到了fontdisplay問題。 dompdf_font_family_cache.dist.phpPHP DOMPDF HTML到PDF轉換器字體呈現問題在v.0.6.1

我用http://eclecticgeek.com/dompdf/load_font.php生成Unicode TAMIL字體(latha by microsoft font)。我已經將字體複製到各自的文件夾中。

但我看到字體不是按原樣打印的。

我的代碼:

<p style="font-family: tamil-latha, verdana, sans-serif;" >தமிழ்</p> 

但什麼是印在PDF是:

enter image description here

這兩個值不一樣。有一些框的字體來附近和最後一個字符一個點是缺少..

注:我還添加了新的字體創建成dompdf_font_family_cache.dist.php

'tamil-latha' => 
    array (
    'normal' => DOMPDF_FONT_DIR . 'latha', 
    'bold' => DOMPDF_FONT_DIR . 'latha', 
    'italic' => DOMPDF_FONT_DIR . 'latha', 
    'bold_italic' => DOMPDF_FONT_DIR . 'latha', 
), 

我提出在GitHub上的同樣的問題在這裏:https://github.com/dompdf/dompdf/issues/838

建議的解決方案是:使用DOMPDF v.0.6.2但它有沒有這樣的版本在這裏:https://github.com/dompdf/dompdf 幫助我,如果你能得到v.0.6.2

+0

我也看不到0.6.2標籤。你有沒有試過Dev分支? https://github.com/dompdf/dompdf/tree/develop –

+0

@DaryllDoyle:是的,我已經嘗試過,但沒有用...你是否建議任何其他API的PDF生成可以適用於所有字體.. – logan

回答

2

Dompdf似乎有問題與UTF-8編碼。我用dompdf嘗試過你的示例,我遇到了同樣的問題。不過,我也嘗試過tcpdf(也是免費的),它似乎運作良好。

enter image description here

這裏是爲您的樣品代碼,以及完整的源can be downloaded here

<?php 

header('Content-type: text/html; charset=UTF-8') ;//chrome 
require_once('tcpdf.php'); 

// create new PDF document 
$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false); 

$pdf->setFontSubsetting(true); 

$pdf->SetFont('freeserif', '', 12); 

$pdf->AddPage(); 

$utf8text = ' 
<html><head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /></head><body> 
<p>தமிழ்</p> 
</body></html>'; 

$pdf->writeHTML($utf8text, true, 0, true, true); 

$pdf->Output('example_008.pdf', 'I'); 

?> 
+0

非常感謝Josh。非常感謝:) 我會嘗試在我的電腦,讓你。它需要任何安裝嗎?或只是複製粘貼文件將工作?同時讓我知道它是否適用於英文和泰米爾語字體顯示的組合。 (目前沒有電腦測試,請讓我知道) – logan

+1

@logan你只需要將文件複製到您的Web服務器目錄。我不需要使用泰米爾語字體 - 默認字體工作得很好(所以是的,英語和泰米爾語應該一起工作)。關鍵要記住的是編碼需要是UTF-8(並且你需要一個pdf庫來支持它)。 –

+0

謝謝:)。 PDF庫,你的意思是tcpdf支持的文件對不對?或任何其他文件? – logan

0

我試着用josh建議的tcpdf。 現在上一個單詞會很好,但新單詞不能正確顯示。在PDF

$utf8text = ' 
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
</head>  <body><p>தமிழ்  முந்திரி </p></body>  </html>'; 

實際的答案是:

enter image description here

+0

不是以英語爲母語的人,請原諒這個問題,是單個字符還是兩個字符合併爲一個字母?現在我懷疑有很多基於PHP的庫可以處理複合字母。我在dompdf中看到了同樣的問題。無論是那個還是你使用的字體對於有問題的角色都沒有好的字形。 – BrianS