我怎样才能用 TCPDF 省略 Helvetica?

How can I omit Helvetica with TCPDF?

我正在用 TCPDF 制作一个 PDF,我正在努力使文件尽可能小。我使用的字体是 Open Sans。我没有(至少有意)在 PDF 的任何地方使用 Helvetica。当我在输出的 PDF 文件中使用 Adob​​e Reader 查看包含的字体时,会列出 Open Sans 和 Helvetica。我注意到如果我 AddFont() 其他字体,输出的 PDF 会变大。

要保存 space,我如何告诉 TCPDF 不在文件中包含 Helvetica?

Helvetica字体是标准的14种PDF核心字体之一,所以使用时并没有嵌入到PDF中。如果查看 TCPDF 字体目录,您会注意到 Helvetica 文件仅包含字体描述, 字体副本。因此,它不应该显着增加文件大小。

解决方案

Helvetica 字体在 TCPDF 配置文件中设置为默认字体。从我的测试来看,这似乎导致它在生成的 PDF 文件中被设置为一种字体,即使它没有被使用。更改 TCPDF 配置文件中的默认字体应该可以防止这种情况发生。

TCPDF 添加 Helvetica 字体有两个原因:

  1. 初始化时,TCPDF class 将默认字体设置为 Helvetica(在构造函数中),因此将此字体添加到文档的字体列表中。

旧版本: 为防止这种情况,您可以编辑文件 config/tcpdf_config.php 并将常量 PDF_FONT_NAME_MAIN 更改为所需的默认字体名称(应该在第 155 行左右)。请注意,您不得使用任何核心字体,因为它们永远不会被嵌入。

对于较新的版本: 在 之前用您想要的默认字体名称 定义 PDF_FONT_NAME_MAIN,包括 TCPDF 文件。示例:

define('PDF_FONT_NAME_MAIN', 'freesans');
include_once 'path/to/tcpdf.php';
  1. TCPDF 在页面底部添加了一个不可见的 link "Powered by www.tcpdf.org"。

为防止这种情况,您必须使用覆盖 class,如下所示:

class MyPdf extends TCPDF {

    public function __construct($orientation='P', $unit='mm', $format='A4', $unicode=true, $encoding='UTF-8', $diskcache=false, $pdfa=false) {
        // call parent constructor
        parent::__construct($orientation, $unit, $format, $unicode, $encoding, $diskcache, $pdfa);
        // disable the tcpdf link
        $this->setTcpdfLink(false);
    }

    /**
     * Allows to disable the invisible "Powered by www.tcpdf.org" link at the bottom of the page.
     * @param type $tcpdflink
     */
    public function setTcpdfLink($tcpdflink = true) {
        $this->tcpdflink = $tcpdflink ? true : false;
    }

}

我也遇到了同样的问题。我试过 JOR 解决方案。它是正确的,但它仍然在我的 pdf 中显示 Helvetica 字体系列。

对于我的 pdf,我使用 SVG image.so 它显示 Helvetica 。在 tcpdf.php 受保护的 属性 中,名为 $svgstyles 的 SVG 字体系列为 Helvetica。

只需在 tcpdf.php 中找到 $tcpdflink 并将该变量设置为 false。这对我有用