代码之家  ›  专栏  ›  技术社区  ›  Frosty

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

  •  0
  • Frosty  · 技术社区  · 8 年前

    <?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('DejaVu','','DejaVuSans-Bold.ttf',true);
    $pdf->SetFont('DejaVu','',14);
    

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

    它工作得很好。

    1 回复  |  直到 8 年前
        1
  •  4
  •   crazyloonybin    8 年前

    这个 AddFont 函数要求特定类型的文件能够使用字体,而不仅仅是字体文件本身。如果你接受 DejaVuSans-Bold.ttf here

    将生成2个文件, DejaVuSans-Bold.php DejaVuSans-Bold.z

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

    following tutorial . 它详细介绍了如何在您自己的电脑上手动生成字体文件,但是有一个在线工具(链接在上面)可以帮您完成这项工作:

    最后,对于TrueType和OpenType字体,您还可以生成文件 online

    注意:当您联机转换时,可能会收到一些警告,表示缺少某些字符。如果您滚动到底部,转换后的文件仍可以下载,您将无法使用PDF中列出的任何缺失字符。