代码之家  ›  专栏  ›  技术社区  ›  jelhan

获取TCPDF中的当前文本颜色

  •  0
  • jelhan  · 技术社区  · 7 年前

    TCPDF 允许设置文本颜色 SetTextColor 方法,但我找不到任何方法来获取当前文本颜色。这是不支持还是我漏掉了什么?

    用例:我正在为TCPDF编写一个可重用的帮助器,它需要修改文本颜色,但完成后应该重置它。

    免责声明:我知道当前版本的TCPDF is deprecreated 但新版本是 not ready yet . 我知道还有其他选项可以呈现pdf(例如chrome headless),对于许多用例来说,这些选项更容易使用,也更稳定,但是我不能使用它们,因为我的用例需要HTML/CSS无法提供的功能。

    2 回复  |  直到 7 年前
        1
  •  1
  •   EPB    7 年前

    没有。至少,不是作为公共职能。

    但是,受保护的财产 $fgcolor 是一个可以直接交还给 setTextColorArray . 知道这一点-扩展类以提供当前文本颜色的getter非常容易。

    <?php
    class MYTCPDF_HELPER extends TCPDF {
        public function getTextColor() {
            return $this->fgcolor;
        }
    }
    
    $pdf = new MYTCPDF_HELPER();
    
    /*...*/
    
    $prevcolor = $pdf->getTextColor();
    $pdf->setTextColorArray(array(100, 0, 0, 0), false);
    $pdf->WriteHTML('<p>Test Text</p>');
    $pdf->WriteHTML('<p>More Text</p>');
    $pdf->setTextColorArray($prevcolor);
    $pdf->WriteHTML('<p>Final Line</p>');
    // "Final Line" is written in whatever color was set when we called getTextColor.
    

    我是从TCPDF本身如何处理在解析器中还原 writeHTML .

    (注意:对于其他颜色数组:绘图颜色存储在 $stokecolor 填充颜色是 $bgcolor .)

        2
  •  2
  •   jelhan    7 年前

    我需要一个可重用的helper类的这个功能。因为这个helper类应该与扩展TCPDF的所有TCPDF实例一起工作,以添加EPB的答案中建议的附加公共方法,所以不是一个选项。我决定使用ReflectionProperty:

    $r = new \ReflectionObject($pdf);
    $p = $r->getProperty('fgcolor');
    $p->setAccessible(true);
    $textColor = $p->getValue($pdf);
    
    推荐文章