【问题标题】:FPDF error: Could not include font metric fileFPDF 错误:无法包含字体度量文件
【发布时间】:2011-09-25 03:31:48
【问题描述】:

我有一个由其他人完成的应用程序,现在我被要求调查一个问题。

生成 pdf 报告时会引发错误。此应用使用 FPDF 生成 PDF

FPDF error: Could not include font metric file

之前它抛出以下错误

Warning: FPDF::include(helveticab.php) [function.FPDF-include]: failed to open stream: No such file or directory 
Warning: FPDF::include() [function.include]: Failed opening 'helveticab.php' for inclusion 
FPDF error: Could not include font metric file

这是通过包含一个包含 helveticab.php 和其他与其他字体相关的 php 文件的字体文件夹来解决的

但错误 FPDF 错误:无法包含字体度量文件仍然存在。 在网上搜索可能的原因是

  1. 字体目录丢失

  2. 没有字体文件的访问权限。

我不确定需要对字体文件夹或文件夹中的文件授予什么权限。 在这方面的任何帮助都会有很大帮助。

【问题讨论】:

    标签: php pdf-generation fpdf


    【解决方案1】:

    我有同样的问题。问题是包含所有字体的文件夹的路径不正确。因此,我在 PHP 文件中添加了更新的以下行,以反映包含所有字体的文件夹的正确路径。

    define('FPDF_FONTPATH','class/fpdf_font/');

    所以,仔细检查这条线定义的路径,它应该可以正常工作。

    【讨论】:

    • 在 Ubuntu 10.4 上,需要的定义是:define('FPDF_FONTPATH','/usr/share/php/fpdf/font/');
    • 在 Debian 上也是 /usr/share/php/fpdf/font。请记住,如果不是,那是因为您没有安装 php-fpdf ;)
    【解决方案2】:

    我相信您已经将 fpdf zip 文件解压到您的本地主机或系统中

    解压 zip 文件后,您会看到如下图所示的目录结构

    并在test.php中插入以下代码

    <?php
    define('FPDF_FONTPATH','font/');
    //above line is import to define, otherwise it gives an error : Could not include font metric file
    require('fpdf.php');
    
    
    
    $pdf = new FPDF();
    $pdf->AddPage();
    $pdf->SetFont('Arial','B',16);
    $pdf->Cell(40,10,'Hello World!');
    $pdf->Output();
    ?>
    

    现在享受

    【讨论】:

      【解决方案3】:

      我的问题是,由于从页面下载 fpdf 库,他们那里的一些脚本使用 Arial 字体,但是,特别是该字体,不包含在字体目录中。我刚刚添加了 define('FPDF_FONTPATH','fpdf/font/'); 和 fpdf 目录的相对路径,并将字体更改为 Courier 并准备好了!

      【讨论】:

        【解决方案4】:

        在我使用 Linux (Debian) 的情况下,我遇到了同样的问题,并且目录是正确的。我解决了向 /font 目录添加 777 权限的问题。现在它就像魅力一样工作 =)))

        【讨论】:

          【解决方案5】:

          如果您使用的是扩展 FPDF 的外部类

          喜欢的文件名Custom_pdf.php

          在那个文件中你写了你的自定义代码

          require_once('fpdf.php')
          
          
          class Custom_PDF extends FPDF{
             ...
          }
          

          然后你像这样包含在你的编码中

          require_once('custom_pdf.php');
          $pdf = new Custom_pdf();
          $pdf->Write();
          ....
          $pdf->output();
          

          这是个问题……

          所以你直接把代码放到你需要的文件里

          require_once('fpdf.php')
          class Custom_PDF extends FPDF{
          ....
          }
          $pdf = new Custom_pdf();
          $pdf->Write();
          ...
          $pdf->output();
          

          它会正常工作...

          谢谢

          抱歉英文错误...

          【讨论】:

            猜你喜欢
            • 2012-09-22
            • 2013-01-05
            • 2013-06-22
            • 2015-01-19
            • 1970-01-01
            • 2013-10-23
            • 1970-01-01
            • 1970-01-01
            • 2012-04-13
            相关资源
            最近更新 更多