2015-04-27 175 views
6

我想将自定义字体添加到使用TCPDF生成的PDF中。我可能会错过一些东西,但the docs似乎已过时。他们引用addTTFfont()函数,但我认为它已被弃用,并且不再存在于最新版本的TCPDF中。如何在TCPDF中添加自定义字体?

我读,我需要转换的ttf文件,并把它在字体文件夹,所以我跑:

php/tcpdf/tools/tcpdf_addfont.php -i php/font/rumpelstiltskin-webfont.ttf 

,它生成的这些文件现在都在字体文件夹:

rumpelstiltskinwebfont.ctg.z 
rumpelstiltskinwebfont.z 
rumpelstiltskinwebfont.php 

然后我试图添加的字体:

$pdf->addFont('rumpelstiltskin'); 
$pdf->SetFont('rumpelstiltskin', '', 14, '', false); 

,但我得到一个错误:

TCPDF ERROR: Could not include font definition file: rumpelstiltskin 
+0

也许你必须给addFont函数文件的完整路径。看起来它没有找到该文件。 – Loopo

+0

@Loopo这不是它需要的完整路径,而是你靠近。我正在使用字体的名称,它需要文件名。感谢评论,它帮助我弄清楚了。 –

+0

我认为你可以这样做: http:// stackoverflow。com/questions/5263588/how-to-implement -font-fonts-in-tcpdf – Ulugov

回答

9

我想出了我的问题,我几乎在那里。

这里是一个一步一步:

首先使用tcpdf_addfont.php工具中的字体TCPDF工具文件夹转换您的字体:

php/tcpdf/tools/tcpdf_addfont.php -i php/font/rumpelstiltskin-webfont.ttf 

这将生成所需的文件,并把它们放在TCPDF字体文件夹。检查字体文件夹并复制字体的名称,在我的情况下它是rumpelstiltskinwebfont

在代码中设置字体使用的字体文件的名称,并写了一行文字:

$pdf->SetFont('rumpelstiltskinwebfont', '', 14, '', false); 
$pdf->Write(0, 'Fill text', '', 0, '', true, 0, false, false, 0); 

就是这样。希望这可以帮助某人。 :)

+1

解决了我的问题;) – Hafez

0

another question得到了这个答案,并为我解决。你只需要使用第一个参数,即字体文件的路径。使用TTF和OTF字体。

它生成一个名称字符串与$pdf->SetFont($fontname, '', $font_size);

希望它可以帮助使用。


最新版本TCPDF使用addTTFfont()方法自动转换成字体格式TCPDF。例如:

// convert TTF font to TCPDF format and store it on the fonts folder 
$fontname = TCPDF_FONTS::addTTFfont('/path-to-font/FreeSerifItalic.ttf', 'TrueTypeUnicode', '', 96); 

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

有关更多信息和示例,请检查TCPDF Fonts documentation page

注意:一旦字体已被转换,TCPDF不再需要TTF文件或上述呼叫addTTFfont()