如何用TCPDF省略Helvetica?

时间:2017-11-29 17:35:50

标签: php file pdf fonts tcpdf

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

为了节省空间,我如何告诉TCPDF不在文件中包含Helvetica?

4 个答案:

答案 0 :(得分:1)

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

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

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

  1. TCPDF在页面底部添加了一个不可见的链接“由www.tcpdf.org提供支持”。

为防止这种情况,您必须使用这样的覆盖类:

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;
    }

}

答案 1 :(得分:0)

Helvetica字体是标准的14核心PDF字体之一,因此在使用时不会嵌入PDF中。如果你查看TCPDF字体目录,你会发现Helvetica文件只包含字体的描述,而不是字体的副本。因此,它不应该显着增加文件大小。

解决方案

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

答案 2 :(得分:0)

我必须面对同样的问题。我已经尝试过 JOR 解决方案。正确,但在我的pdf中仍然显示Helvetica字体系列。

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

答案 3 :(得分:0)

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