【问题标题】:Get current text color in TCPDF获取 TCPDF 中的当前文本颜色
【发布时间】:2019-02-01 21:17:52
【问题描述】:

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

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

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

【问题讨论】:

    标签: tcpdf


    【解决方案1】:

    我需要这个功能来实现我的问题中所写的可重用帮助程序类。由于此帮助程序类应与扩展 TCPDF 的所有 TCPDF 实例一起使用,以添加一个额外的公共方法,如 EPB 的答案中所建议的那样,这不是一个选项。我决定使用 ReflectionProperty:

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

    【讨论】:

      【解决方案2】:

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

      但是,受保护的属性$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。)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-11-18
        • 1970-01-01
        • 2015-05-18
        • 1970-01-01
        • 1970-01-01
        • 2012-02-24
        相关资源
        最近更新 更多