【问题标题】:Fonts not supported while rendering PDF templates using PDF blocks tool使用 PDF 块工具呈现 PDF 模板时不支持字体
【发布时间】:2018-04-03 05:42:22
【问题描述】:

我正在使用 Pdflib 模块将内容呈现为 PDF 模板,并且我将它与 PDF 块插件一起使用。 我创建了 PDF 块并添加了 Arial、Calibri 等字体; 但是在渲染时显示错误

Warning: Font 'Arial' with encoding 'unicode': Font file (AFM, PFM, TTF, OTF etc.) or host font not found  

我的服务器中安装了字体,我可以在 usr/share/fonts 文件夹中看到它,所有文件在文件夹中都有 .ttf 扩展名。 我正在使用下面的代码来呈现数据

if ($p->fill_textblock($page, $elem, $data->{$elem},"encoding=unicode") == -1) {
            printf ("Warning: %s\n", $p->get_errmsg());
        }

如果我在 Perl 代码中使用字体,它可以正常工作

my $font = 'Arial';
 my $text_optlist ="font=".$font." encoding=unicode";
    foreach my $elem(keys %{$data}){
        if ($p->fill_textblock($page, $elem, $data->{$elem},$text_optlist) == -1) {
            printf ("Warning: %s\n", $p->get_errmsg());
        }

但是由于积木无法正常工作,我不确定它有什么问题。 任何帮助将不胜感激

谢谢 吉特什

【问题讨论】:

标签: perl pdflib


【解决方案1】:

我的服务器中安装了字体,我可以在 usr/share/fonts 文件夹中看到它,所有文件在文件夹中都有 .ttf 扩展名

您必须使字体可用于 PDFlib。请参阅 PDFlib 9.1 教程,第 6.4.4 章“搜索字体”以及第 3.1.4 章“资源配置和文件搜索”。

简而言之: PDFlib 在您使用“SearchPath”选项指定的 SearchPath 目录(y/ies)中搜索字体文件。 /usr/share/fonts 不是 PDFlib 搜索字体文件的默认目录。

当您希望 PDFlib 在此目录中进行搜索时,应将此目录添加为 SearchPath 目录

$p->set_option("searchpath={{/usr/share/fonts} {/maybe/some/other/dir}}");

另请参阅 PDFlib perl 示例(如 starter_block.pl),它也演示了搜索路径。

【讨论】:

  • 我已经使用过它,但它不起作用我的 $searchpath = "/usr/share/fonts";我的 $p = 新 PDFlib::PDFlib; # 这意味着我们必须检查 load_font() 等的返回值 $p->set_option("errorpolicy=return"); # 设置字体和PDF文件的搜索路径 $p->set_option("SearchPath={{" . $searchpath ."}}"); # 所有字符串都应为 utf8 $p->set_option("stringformat=utf8");
  • 可能是字体文件有大写/小写问题?当您不通过 pdflib.upr 文件配置字体资源时,PDFlib 使用基于扩展的搜索。在您的情况下,您使用字体名称 Arial,因此预计字体文件也具有 Arial 和已知扩展名之一,例如 .ttf .
  • 是的,它有大写​​的问题,现在它的工作
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-09-27
  • 1970-01-01
  • 2016-04-11
  • 2015-02-25
  • 2022-08-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多