PHP,Fpdf解析错误:使用AddFont()时

时间:2017-08-23 12:47:04

标签: php pdf fpdf

我在更改字体时显示PDF文件中的内容时遇到问题。

<?php
session_start();
include $_SERVER['DOCUMENT_ROOT'] . "/library/fpdf.php";
$pdf = new FPDF('P',"mm",'A4');
$pdf->AddPage();
$pdf->AddFont('DejaVu','','DejaVuSans-Bold.ttf',true);
$pdf->SetFont('DejaVu','',14);
foreach ($_SESSION['settings'] as $settings) {
    $pdf->Cell(130,5,$settings,1,1);
}

$pdf->Output();
?>

我尝试用其他文件更改字体,我只是不断收到如下错误:

  

警告:输入中出现意外的字符:

  

解析错误[我的ttf文件路径]

即使我没有在PDF中打印任何内容,也只是留空,我仍然会因为AddFont而出错,

如果我删除

$pdf->AddFont('DejaVu','','DejaVuSans-Bold.ttf',true);
$pdf->SetFont('DejaVu','',14);

并将其替换为

$pdf->SetFont('Arial','',14);

它工作正常。

1 个答案:

答案 0 :(得分:4)

AddFont函数需要特定类型的文件才能使用字体,而不仅仅是字体文件本身。如果您使用DejaVuSans-Bold.ttf文件并上传here,则会将其转换为您所需的格式。

将生成2个文件,DejaVuSans-Bold.phpDejaVuSans-Bold.z。将这两者复制到项目中,然后将代码行更改为以下内容:

$pdf->AddFont('DejaVu','','DejaVuSans-Bold.php');

有关如何在following tutorial上添加新字体的更多信息。它有关于如何在您自己的PC上手动生成字体文件的详细信息,但是有一个在线工具(上面链接)将为您完成:

  

最后,对于TrueType和OpenType字体,您还可以生成文件online,而不是手动执行。

注意:当您在线转换时,您可能会收到一些警告,说某些字符丢失了。如果您滚动到底部,转换的文件仍可供下载,您只是无法使用PDF中列出的任何缺失字符。