在TCPDF中嵌入字体

时间:2019-04-10 20:37:27

标签: tcpdf

我已经阅读了有关该主题的以前的文章,但是所有内容都是陈旧的,没有答案的和/或关于创建自定义字体的更具体的内容。

在TCPDF中:

$pdf->SetFont('times', '', 10);

我创建的pdf看起来很棒。只是BarnesAndNoble说我提交的PDF不包含“嵌入式字体”。 Kindle也是这样,但后来他们为我嵌入了它们。我接下来要尝试LuLu,但想先与BN.com打交道。

一个例子表明:

$fontname = $pdf->addTTFfont('/fonts/arial.ttf', '', '', 32);

...但是不继续说“ $ fontname”。也没有“ 32”的具体含义,或者“ 32”是否有更好的选择。或者,如果确实嵌入字体!

我的网络托管商说我的字体路径是:

/usr/share/fonts/default/Type1

...然后(区分大小写?):

/usr/share/fonts/default/Type1/Helvetica

我需要正确嵌入字体!

1 个答案:

答案 0 :(得分:0)

TCPDF只会自动嵌入您自己添加的字体。我可以肯定地说,假设大多数操作系统都已提供Times,Helvetica和Courier,因此TCPDF不会嵌入它们。因此,在您的情况下,如果添加TTF字体,TCPDF应该能够识别何时使用它并自动嵌入字体定义。

此外,您只需要执行一次$fontname = $pdf->addTTFfont('/fonts/arial.ttf', '', '', 32);,就可以运行一次脚本,然后将该行注释掉。


直接从documentation

AddFont( $family, $style = '', $fontfile = '', $subset = 'default' )

导入TrueType,Type1,Core或CID0字体并使其可用。必须首先生成一个字体定义文件(读取/fonts/utils/README.TXT)。如果定义了常量,则定义文件(以及嵌入时的字体文件本身)必须存在于当前目录中,或者存在于K_PATH_FONTS指示的目录中。如果找不到,则会生成错误“无法包含字体定义文件”。

参数

$家庭- 字体系列。名称可以任意选择。如果这是标准的姓氏,它将覆盖相应的字体。

$ style-字体样式。可能的值是(不区分大小写):

  • 空字符串:常规(默认)
  • B:粗体
  • I:斜体
  • BI或IB:粗体斜体

$ fontfile-字体定义文件。默认情况下,该名称是根据族和样式构建的,小写且没有空格。

$ subset-如果为true,则仅嵌入字体的子集(仅存储与使用的字符有关的信息);如果为false,则嵌入完整字体;如果'default'使用通过setFontSubsetting()设置的默认值。此选项仅对TrueTypeUnicode字体有效。如果要允许用户更改文档,请将此参数设置为false。如果对字体进行了子集化,则接收PDF的人将需要使用相同的字体才能对PDF进行更改。由于您仅嵌入字体的一部分,因此PDF的文件大小也将较小。

返回-包含字体数据的数组,如果出错则返回false。

自 1.5 看到 TCPDF :: SetFont(),TCPDF :: setFontSubsetting() 公开