TCPDF字体没有包含,显示" ..."在adobe reader上

时间:2016-02-08 11:28:07

标签: php fonts tcpdf

我使用这行代码

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; 

其他字体对我来说还可以。不知道某些字体发生了什么。 解决方案是什么?

2 个答案:

答案 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('');