【问题标题】:TCPDF SetFont and writeHTMLTCPDF SetFont 和 writeHTML
【发布时间】:2020-05-22 07:22:42
【问题描述】:

我遇到了 TCPDF 的问题。使用 writeHTML 时,我的自定义字体(以及任何其他包含的字体)不起作用。

$tcpdf = tcpdf_get_instance();
$fontname = $tcpdf->addTTFfont('/antiquariat/sites/default/files/fonts/tstar-regular-webfont.ttf', 'TrueTypeUnicode', '', 32);
$tcpdf->SetFont('tstarwebfont', '', 16);
$tcpdf->writeHTML($html);

即使我使用“helvetica”或任何其他字体,字体也不会改变。 第二件事是,根本没有生成自定义字体,但首先我很挣扎,甚至没有使用任何其他字体。

【问题讨论】:

    标签: tcpdf


    【解决方案1】:

    这就是我使用 TCPDF 的方式:

    1. 首先,使用website 生成您的 .PHP 文件和 .z 文件。
    2. 将这 2 个文件放在文件夹 .../tcpdf/fonts 中。
    3. 您将使用 PHP 名称文件之一。
    4. 将字体添加到 pdf 对象:

       $pdf->AddFont('yourfont1');        //custom font
       $pdf->AddFont('yourfont2');        //custom font
      

    现在,在 writeHTML 中使用它:

    $html = '
            <style>
            h1 {
                font-family: yourfont1;
                font-size: 40pt;
                text-align:center;
            }
    
            </style>
    
    
        <h1>Testing FONT</h1>
        ';
    
    $pdf->writeHTML($html, true, false, true, false, '');
    

    【讨论】:

    • 这似乎不起作用。我仍然需要打电话给SetFont() 才能让它工作。请注意,字体确实是嵌入的,但 CSS 根本无法设置字体。
    • 我检查了我的代码,我注意到我在添加这两个新字体后设置了字体,也许你只需要设置一个默认字体,即使你不打算使用它,例如:@987654325 @。此外,您是否正确遵循了我给出的每个步骤?如果您有任何问题,请发布代码以便我检查。
    • 我已经试过了。也就是说,TCPDF 缺乏功能,所以我切换到 wkhtmltopdf。
    【解决方案2】:

    由于没有人回答我,我也没有按预期完成,所以我切换到 DOMPDF,它目前运行良好!这不是我正在寻找的解决方案,而是一个可行的解决方案!

    【讨论】:

      【解决方案3】:

      我有 TCPDF 6.2.6。

      我发现添加字体是一次性操作,应该使用 tools/tcpdf_addfont.php 脚本来完成。字体转换后保存到fonts目录下,即可在文档中按名称引用字体。

      【讨论】:

        【解决方案4】:

        对于任何通过 Google 来到这里的人:为了让这项工作正常进行,我使用了以下代码:

        $josefin = TCPDF_FONTS::addTTFfont('pdf/JosefinSans-Light.ttf', 'TrueTypeUnicode', '', 96); // echo $josefin;
        $pdf->AddFont('josefinsanslight');
        

        在我使用的 CSS 中:

        h2 {font-family: "josefinsanslight"; font-weight:300; color: #611c67; }
        

        addTTFfont部分使用一次后可以跳过,在tcpdf字体文件夹中生成需要的文件。

        似乎字体名称是从文件名派生的,跳过任何非字母数字字符并转换为小写。

        【讨论】:

          【解决方案5】:

          不要问 TCPDF 复杂的事情。这种方式效果很好。

          $total= <<<HTML
            <table style="width:100%;border:1px solid grey;">
              <tr>
                <td>Total </td>
                <td align="right" style="font-size:12pt;font-family: 'Times New Roman', Times, serif;"><b>$value</b></td>
              </tr>
            </table>
          HTML;
          
          $pdf->writeHTML($total, true, false, false, false, '');
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2015-03-29
            • 2011-07-05
            • 2012-11-22
            • 2011-12-15
            • 1970-01-01
            • 2020-06-25
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多