我正在使用TCPDF库使用PHP生成PDF文件。我想使用自定义字体,因此我使用addTTFfont method添加自定义TrueType字体文件。我要添加的字体是"Aller" from fontsquirrel.com
$aller = $pdf->addTTFfont($_SERVER['DOCUMENT_ROOT'].'/includes/fonts/Aller/Aller_Rg.ttf', 'TrueTypeUnicode', '', 32);
这在我的TCPDF字体文件夹中创建了文件aller_rg.php,aller_rg.ctg.z和aller_rg.z。 K_PATH_FONTS常量指向此目录。 addTTFfont方法返回字体的字符串名称。如果出现错误,它将返回false,因此问题可能不在这里..
然后我尝试使用字体
$pdf->SetFont($aller, '', 16); // or $pdf->SetFont('aller_rg', '', 16);
$pdf->Write(0,"abcdefg",'',0,'L',true,0,false,true,0);
生成pdf时没有任何错误。当在浏览器预览中查看时,字体显然不是过敏而只是一般的sans-serif ..当我在Mac的预览应用程序中打开pdf时,使用过敏字体的部分是空白的(没有文本显示)。
任何人都知道我做错了什么?
答案 0 :(得分:1)
使用此工具让它工作
http://www.xml-convert.com/en/convert-tff-font-to-afm-pfa-fpdf-tcpdf
它会生成一个放在TCPDF字体目录中的.php,.z和.afm文件。我还不确定问题是什么。 addTTFfont()方法不会创建.afm文件,所以可能就是这样吗?
答案 1 :(得分:0)
我遇到了同样的问题:
TCPDF转换后的字体未显示,但使用以下链接转换的字体执行了: http://www.xml-convert.com/en/convert-tff-font-to-afm-pfa-fpdf-tcpdf
所以我比较了两者,发现xml-convert.com使用“TrueType”而不是“TrueTypeUnicode”作为字体类型。对我来说,它的工作是将参数更改为“TrueTypeUnicode”。尝试:
$aller = $pdf->addTTFfont($_SERVER['DOCUMENT_ROOT'].'/includes/fonts/Aller/Aller_Rg.ttf', 'TrueType', '', 32);