2014-04-25 27 views
0

我儘量讓與TCPDF一份報告,但它不是使用UTF-8(越南)工作TCPDF 6.0.047 - UTF-8和時間New Roman字體

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

$pdf->writeHTML("TỔNG HỢP", true, false, false, false, ''); 

//Close and output PDF document 
$pdf->Output('test.pdf', 'I'); 

但輸出T?NG H?P。如何解決,謝謝

+0

看起來也許字體不支持「O」和「o」。如何這個其他SO帖子:http://stackoverflow.com/questions/9426983/creating-pdfs-using-tcpdf-that-supports-all-languages-especially-cjk – Angst

回答

1

1)字體的偉大工程 首先,我複製我的Windows8 「宋體」 fonr從C :\ windows \ fonts到一個名爲「tnr」的tcpdf/fonts下的臨時目錄。有4個文件「times.ttf」,「timesbi.ttf」,「timesbd.ttf」,「timesi.ttf」。

2)然後從TCPDF /字體除去 「times.php」

3)重拍倍DEF字體和與此

// remake times 
$fontpath1='../fonts/tnr/times.ttf'; 
$fontpath2='../fonts/tnr/timesbd.ttf'; 
$fontpath3='../fonts/tnr/timesbi.ttf'; 
$fontpath4='../fonts/tnr/timessi.ttf'; 
$fontname1 = $pdf->addTTFfont($fontpath1, 'TrueTypeUnicode', '', 96); 
$fontname2 = $pdf->addTTFfont($fontpath2, 'TrueTypeUnicode', '', 96); 
$fontname3 = $pdf->addTTFfont($fontpath3, 'TrueTypeUnicode', '', 96); 
$fontname4 = $pdf->addTTFfont($fontpath4, 'TrueTypeUnicode', '', 96); 

4)修飾的腳本添加新的雙(粗斜體)以4種方式打印字符串。大膽和斜體不起作用,但不知道如何重製它們。但是,粗體和粗體斜體可以起作用,並且您可以看到對比。

5)修改後的腳本


<?php 
// Include the main TCPDF library (search for installation path). 
require_once('tcpdf_include.php'); 

// create new PDF document 
$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false); 
// set document information 
$pdf->SetCreator('zzz'); 
$pdf->SetAuthor('zzz'); 


// set default font subsetting mode 
//$pdf->setFontSubsetting(true); 

// remake times 
$fontpath1='../fonts/tnr/times.ttf'; 
$fontpath2='../fonts/tnr/timesbd.ttf'; 
$fontpath3='../fonts/tnr/timesbi.ttf'; 
$fontpath4='../fonts/tnr/timessi.ttf'; 
$fontname1 = $pdf->addTTFfont($fontpath1, 'TrueTypeUnicode', '', 96); 
$fontname2 = $pdf->addTTFfont($fontpath2, 'TrueTypeUnicode', '', 96); 
$fontname3 = $pdf->addTTFfont($fontpath3, 'TrueTypeUnicode', '', 96); 
$fontname4 = $pdf->addTTFfont($fontpath4, 'TrueTypeUnicode', '', 96); 


$pdf->AddPage(); 
$string="TỔNG HỢP"; 

$pdf->SetFont('times', '', 14, '', false); 
$pdf->writeHTML('default ' . $string,true, 0, true, 0); 
$pdf->SetFont('times', 'b', 14, '', false); 
$pdf->writeHTML('bold ' . $string,true, 0, true, 0); 
$pdf->SetFont('times', 'i', 14, '', false); 
$pdf->writeHTML('italic ' . $string,true, 0, true, 0); 
$pdf->SetFont('times', 'bi', 14, '', false); 
$pdf->writeHTML('bold italic ' . $string,true, 0, true, 0); 


//Close and output PDF document 
$pdf->Output('test.pdf', 'I'); 
?> 
+0

但我需要時間新的羅馬字體,在我的電腦上,我總是使用時代字體 – freestyle

+0

試試這個:如果你有一個支持unicode的times-new-roman,把字體文件的一個副本和tcpdf字體(目錄必須是可寫的)然後添加到addTTFfont() – Angst

+0

見修改的腳本這對我很有用 – Angst

1

我有一個類似的問題,波蘭字符,但只有與Firefox瀏覽器。當

$pdf->setFontSubsetting(false); 

編輯

我對你的榜樣數據檢查.. setFontSubsetting不工作(如你說):(

我做了一個小測試:

試試這個。我改變了字體報告,然後開始正常工作。

例如:

$pdf->SetFont('freeserif', '', 10, '', false); 

$pdf->SetFont('dejavuserifbi', '', 10, '', false); 

等字體:freesans,dejavuserifi,freeserif,而不是 '時間'。

與在定義的所有字體正常工作:

(看看TCPDF /字體/ freesans.php)

我認爲,「次」對於UTF8編碼不完整的字符表。在字體定義中,只有255個元素,但在'freeserif'中超過65k。 「Times」只是標準ASCII字符的「核心字體」。

你嘗試一下本作 '次'?: Creating PDFs using TCPDF that supports all languages especially CJK

編輯

我從上面的鏈接測試的解決方案..

我的步驟:

  1. 複製倍.ttf從windows字體目錄到tcpdf/fonts/utils
  2. 在同一目錄下,運行命令行:

    ttf2ufm -a -F times.ttf 
    

php -q makefont.php times.ttf times.ufm 

注意:此工具是不是在TCPDF的 '分' 版本。

  1. 複製新文件:times.ctg.z,times.php,times.t1a,times。ž到TCPDF /字體

運行腳本:

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

    $pdf->writeHTML("TỔNG HỢP", true, false, false, false, ''); 
    $pdf->Output('test.pdf', 'I'); 

這對我來說:)

+0

它不工作:( – freestyle

+0

檢查我編輯的答案 – ryrysz

+0

我嘗試創建字體從時間新的羅馬,在我的p/c字體是如此之好,但它仍然不工作:( – freestyle

0

我面對這個問題也。我的工作方式是使用dejavusans字體,因爲字體是爲utf8 unicode設計的,而tcpdf已經有了。

演示代碼:

$pdf->SetFont('dejavusans', '', 14, '', true); 
相關問題