我使用这行代码
在TCPDF
中添加了许多字体
TCPDF_FONTS::addTTFfont('fonts/ArchitectsDaughter.ttf', 'TrueTypeUnicode', '', 96);
$pdf->AddFont("ArchitectsDaughter");
许多其他字体正在运行但是,这个不起作用。 当我将这个pdf打开到阅读器时,它会显示如下错误
无法提取嵌入字体' ArchitectsDaughter'。一些性格 可能无法正确显示或打印。
我正在以pdf格式导入svg
文件。
以下是我在pdf中插入的SVG文件,您可以从here获取PDF,这里是font file。
以下是pdf将如何生成的完整代码。
$fileName='export';
$uploadPath = Config::get('constants.paths.uploads.images.base').'/'.$fileName.'.svg';
$pdf = new TCPDF();
TCPDF_FONTS::addTTFfont(dirname(dirname(dirname(dirname(__FILE__)))).'/vendor/font-awesome/fonts/ArchitectsDaughter.ttf', 'TrueTypeUnicode', '', 96);
TCPDF_FONTS::addTTFfont(dirname(dirname(dirname(dirname(__FILE__)))).'/vendor/font-awesome/fonts/Archivor.ttf', 'TrueTypeUnicode', '', 96);
$pdf->AddFont("Archivor");
$pdf->AddFont("ArchitectsDaughter");
$pdf->SetPrintHeader(false);
$pdf->SetPrintFooter(false);
$pdf->AddPage();
$pdf->ImageSVG($uploadPath, $x='', $y='', $w='', $h='', $link='', $align='', $palign='', $border=0, $fitonpage=true);
$filename = 'export.pdf';
$pdf->output($filename, 'D');
exit;
其他字体对我来说还可以。不知道某些字体发生了什么。 解决方案是什么?
答案 0 :(得分:1)
根据文档TCPDF_FONTS::addTTFfont()
将提供的字体永久添加到fonts文件夹并返回其名称。所以没有理由每次都添加它,但是必须使用添加的字体和正确的名称。
// ...
$pdf = new TCPDF();
$fontArchitectsDaughter = TCPDF_FONTS::addTTFfont(realpath(__DIR__ . '/../../../vendor/font-awesome/fonts/ArchitectsDaughter.ttf'), 'TrueTypeUnicode', '', 96);
$fontArchivor = TCPDF_FONTS::addTTFfont(realpath(__DIR__ . '/../../../vendor/font-awesome/fonts/Archivor.ttf'), 'TrueTypeUnicode', '', 96);
$pdf->AddFont($fontArchivor);
$pdf->AddFont($fontArchitectsDaughter);
// ...
答案 1 :(得分:1)
首先通过TCPDF_FONTS::addTTFfont()
设置字体,或者在字体dir中添加必要的文件(通过TCPDF字体转换器转换TTF文件,如http://fonts.snm-portal.com)
之后,激活字体:
$pdf->SetFont('FontAwesome','');
然后,使用writeHTML
函数编写一个unicode字符,以& #x开头,以;结尾;
例如:表示f0c9(条形)图标(http://fontawesome.io/icon/bars/):
$pdf->writeHTML('');