使用PDF块工具渲染PDF模板时不支持字体

时间:2018-04-03 05:42:23

标签: perl pdflib

我正在使用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());
        }

但是这些块不起作用,我不确定它有什么问题。 任何帮助将不胜感激

由于 Jitesh

1 个答案:

答案 0 :(得分:2)

  

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

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

用几句话说: PDFlib搜索您使用选项" SearchPath"指定的SearchPath director(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。