2012-06-05 20 views
3

我正在尋找一種解決方案,以便爲使用tcpdf創建的我的PDF文檔設置多於一種字體。如何在TCPDF中設置不同的字體

我想要做這樣的事情:

$pdf->SetFont('verdana_bold', 'B', 12); 
$pdf->SetFont('verdana', '', 12); 

我需要爲我的文檔粗體和常規字體。上面的例子不起作用。當我切換兩行時,文本全是粗體。當我使用上面的例子時,文本是正常的。

我想用常規的CSS樣式表設置font-weight

希望你有一個解決方案。

+2

或者,使用PhantomJS並有使用WebKit渲染生成PDF。 http://phantomjs.org/ – starlocke

+0

http://stackoverflow.com/questions/5263588/how-to-implement-custom-fonts-in-tcpdf –

+0

如果從Linux系統運行PhantomJS,它仍然需要Freetype和Fontconfig。 http://phantomjs.org/download.html –

回答

1

轉換爲Verdana字體使用TCPDF:

$fontname = $pdf->addTTFfont('/path-to-font/verdana.ttf', 'TrueTypeUnicode', '', 32); 
  • 確保字體文件夾可寫
  • 你有設置路徑在 配置/ tcpdf_config.php K_PATH_FONTS不變的字體?
  • 閱讀谷TCPDF Fonts
+0

當我將我的verdana.ttf上傳到我的網絡服務器時,它在4個文件中自動分割。 Verdana.ttf,Verdanai.ttf(斜體),verdanab.ttf(粗體)和verdanaib.ttr(粗體斜體) - 但在我的方式我只是添加一個字體 - 例如verdana.ttf - 但沒有解決方案得到粗體和常規字體。 – TJR

-2

我剛解決了我的問題。問題是,字體必須以正確的方式命名。 verdana_bold是錯誤的 - 它必須是verdanab。然後,我只需要註冊verdana字體和tcpdf就可以自動獲取該字體的粗體版本的verdanab.ttf。

+0

你可以請張貼一些代碼嗎?我有同樣的問題。 – Lohardt

5

您可以使用自定義字體嵌入HTML這樣的:

$fontname=$pdf->addTTFfont('path/myfont.ttf', '', '', 32); 
//echo $fontname; 

$html='<span style="font-family:'.$fontname'.;font-weight:bold">my text in bold</span>: my normal text'; 
$pdf->writeHTMLCell($w=0,$h=0,$x=11,$y=201,$html,$border=0,$ln=0,$fill=false,$reseth=true,$align='L',$autopadding=false); 
1

下面的線將在您的字體生成3個文件的文件夾

rotisserifi56.php,rotisserifi56.ctg,rotisserifi56.rar

使用該生成文件現在

$fontname = $this->pdf->addTTFfont('fonts/Rotis Serif Italic 56.ttf', 'TrueTypeUnicode', '', 32); 


// use the font 
$this->pdf->SetFont($fontname, '', 14, '', false); 

,U SE中的字體是這樣的:

$this->pdf->AddFont('rotisserifi56', '', 'rotisserifi56.php'); 
$this->pdf->SetFont('rotisserifi56'); 
-2

步驟inlcude自定義字體:

  1. ,你可以找到你從C希望自定義字體的.TTF文件://窗/ fonts目錄。
  2. 將該文件複製到位於TCPDF字體文件夾/字體
  3. 使用$pdf->addTTFfont('C://wamp/www/projectname/...path to .ttf file', 'TrueTypeUnicode', '', 32);
  4. $pdf->SetFont('custom_font_name');

您的自定義字體就可以使用。

+0

你沒有解決這個問題。問題是,大膽和斜體不會工作,除非你遵循命名約定。 – Lohardt

0

我知道這個問題很老,但我有同樣的問題,並修復它。

你可以做什麼,但不應該做的是:

$pdf->SetFont('verdana_bold', 'B', 12); 
$pdf->SetFont('verdana', '', 12); 

什麼你基本上做的是在這裏定義2種字體。一個名爲verdana,一個名爲verdana_bold。 雖然您將B指定爲粗體,但無法找到此ttf。因爲TCPDF基本上檢查名爲verdana_boldb.ttf的字體目錄中的文件。 這不存在,所以它需要verdana_bold.ttf(乍一看似乎是正確的行爲)。

對於我來說,在我嘗試在表格中同時使用粗體和非粗體樣式之後,問題變得明顯,而且我只以粗體顯示整個表格或者以非粗體顯示整個表格(刪除或添加B樣式說明符沒有區別)。

你應該做的:

添加新字體類型:

$fontname = TCPDF_FONTS::addTTFfont($fontfile, 'TrueType', '', 32); 

當你想使用的字體:

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

當你想在一個HTML粗體項目cell使用html b標記:

<b>myvalue</b> 

如果您有verdanab.ttf文件,則可以檢查字體目錄。

$ ls fonts/verdanab. 
verdanab.ctg.z verdanab.php verdanab.z 

我希望這可以幫助別人:)