DOMPDF 的自定义字体

Posted

技术标签:

【中文标题】DOMPDF 的自定义字体【英文标题】:Custom Fonts for DOMPDF 【发布时间】:2012-09-16 20:45:03 【问题描述】:

我正在使用 DOM PDF 0.6.0 Beta 2。我想在 PDF 文件中使用自定义字体(字体:'Segeo Print'、'Lucida Handwriting'、'Airplanes in the Night Sky')。

我按照指南在我的 php 代码中安装和使用字体,这里给出了 http://code.google.com/p/dompdf/wiki/CPDFUnicode

但我无法在我的 PDF 中获得所需的字体。你可以在这篇文章中找到我的代码。请告诉我如何解决此问题。

<?php     
    require_once("dompdf_config.inc.php");

   $html = "<html>
                <head>   
                    <meta http-equiv='Content-Type' content='text/html;charset=utf-8'>
                    <style>
                        *font-size:15px;  
                        div.ClJfont: nightsky;   
                    </style>      
                </head>
                <body>            
                   <div class='ClJ'>This text is in DIV Element</div><br /><br />
                </body>
          </html>";

    $dompdf = new DOMPDF();    
    $dompdf->load_html($html);
    $dompdf->render();
    $pdf = $dompdf->output();
    $dompdf->stream("dompdf_out.pdf", array("Attachment" => false));

?>    

【问题讨论】:

如果您仍在使用 beta 2,请尝试升级到 beta 3。它对自定义字体有更好的支持,现在支持字体替换,并且具有更简单的字体加载机制(操作方法需要更新以反映这些变化)。 仅供参考,您的代码看起来不错,因此可能是字体本身的问题(例如字体未正确加载)。 感谢您的评论。将尝试升级到 beta 3,让我们看看结果如何。 【参考方案1】:
    转到您的 DOMPDF 文件夹 将字体作为 .ttf(TrueType 字体)或 .otf(OpenType 字体)复制到 DOMPDF 的根目录中 打开命令行并运行
    php load_font.php your_fonts_name ./your-normal.ttf ./your-bold.ttf ./your-bold-italic.ttf
    DOMPDF 现在创建了 Adob​​e Font Metrics 并将其复制到 lib/fonts/* - 您现在可以将它与
    font-family: your_fonts_name;
    一起使用

【讨论】:

@ueli:我没有安装,只是复制粘贴的 dompdf。我该怎么办? 我认为第二个文件名后面有一个逗号可能会导致错误,代码应该是:php load_font.php your_fonts_name ./your-normal.ttf ./your-bold.ttf ./your-粗斜体.ttf 这对我不起作用。从 github (github.com/dompdf/dompdf) 中提取新版本。运行命令时,我得到:Warning: require_once(/Users/me/Downloads/dompdf-master/lib/php-font-lib/classes/Font.php): failed to open stream: No such file or directory in /Users/me/Downloads/dompdf-master/dompdf_config.inc.php on line 332 @Kannu 为什么不合适? answer 不适用于基于作曲家的 DomPDF 安装。此外,这不是更改核心目录的正确方法【参考方案2】:

你可以添加css字体:

@font-face 
    font-family: new_font;
    src: url('my_font.ttf');

div.ClJ
    font-family: new_font; 

【讨论】:

我不认为这是附件,因为我已经为 DOM PDF 安装了字体,并且字体的定义已经在 dompdf_font_family_cache.dist 文件中可用 我应该把这个 css 部分保存在哪里?【参考方案3】:

如果您想在没有基于命令的界面的情况下将自定义字体安装到服务器 那么您可以执行以下基于 Web 的模型来安装自定义字体

    从here下载ejaz.php 把这个文件放到dompdf的根目录下,按照里面写的说明操作

不需要root或命令/终端访问

【讨论】:

以上是关于DOMPDF 的自定义字体的主要内容,如果未能解决你的问题,请参考以下文章

Xcode 6 大小类中的自定义字体大小无法与自定义字体一起正常工作

NavigationDrawer 上的自定义字体

Xcode Playground 中的自定义字体

Next.js + Tailwind 中的自定义字体:没有错误,但字体错误

UIbarbuttonItem 标题的自定义字体

Interface Builder 中的自定义字体