获取 TCPDF 中的当前文本颜色
Get current text color in TCPDF
TCPDF 允许通过 SetTextColor
方法设置文本颜色,但我找不到任何方法来获取当前文本颜色。这是根本不支持还是我错过了什么?
用例:我正在为 TCPDF 编写一个可重用的助手,它需要修改文本颜色,但应该在完成后重置它。
免责声明:我知道当前版本的 TCPDF is deprecreated but the new version is not ready yet。我知道还有其他选项可以渲染 PDF(例如 chrome headless),这些选项对于许多用例来说更易于使用且更稳定,但我无法使用它们,因为我的用例需要使用 [ 无法实现的功能=20=] / CSS.
没有一个。至少,不是作为 public 函数。
然而,受保护的 属性 $fgcolor
是一个可以直接返回给 setTextColorArray
的数组。了解这一点 - 很容易扩展 class 为当前文本颜色提供 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
中。)
我需要这个功能来实现可重复使用的助手 class,正如我在问题中所写的那样。由于这个助手 class 应该与所有扩展 TCPDF 的 TCPDF 实例一起工作,以添加额外的 public 方法,正如 EPB 的回答中所建议的那样不是一个选项。我决定使用 ReflectionProperty:
$r = new \ReflectionObject($pdf);
$p = $r->getProperty('fgcolor');
$p->setAccessible(true);
$textColor = $p->getValue($pdf);
TCPDF 允许通过 SetTextColor
方法设置文本颜色,但我找不到任何方法来获取当前文本颜色。这是根本不支持还是我错过了什么?
用例:我正在为 TCPDF 编写一个可重用的助手,它需要修改文本颜色,但应该在完成后重置它。
免责声明:我知道当前版本的 TCPDF is deprecreated but the new version is not ready yet。我知道还有其他选项可以渲染 PDF(例如 chrome headless),这些选项对于许多用例来说更易于使用且更稳定,但我无法使用它们,因为我的用例需要使用 [ 无法实现的功能=20=] / CSS.
没有一个。至少,不是作为 public 函数。
然而,受保护的 属性 $fgcolor
是一个可以直接返回给 setTextColorArray
的数组。了解这一点 - 很容易扩展 class 为当前文本颜色提供 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
中。)
我需要这个功能来实现可重复使用的助手 class,正如我在问题中所写的那样。由于这个助手 class 应该与所有扩展 TCPDF 的 TCPDF 实例一起工作,以添加额外的 public 方法,正如 EPB 的回答中所建议的那样不是一个选项。我决定使用 ReflectionProperty:
$r = new \ReflectionObject($pdf);
$p = $r->getProperty('fgcolor');
$p->setAccessible(true);
$textColor = $p->getValue($pdf);