TCPDF允许通过SetTextColor
方法设置文本颜色,但我找不到任何方法来获取当前文本颜色。这是完全不被支持还是我错过了什么?
用例:我正在为TCPDF编写一个可重用的助手,该助手需要修改文本颜色,但完成后应将其重置。
免责声明:我知道TCPDF is deprecreated的当前版本,但新版本为not ready yet。我知道还有其他渲染PDF的选项(例如无头chrome),对于许多用例而言,它们更易于使用且更稳定,但是我无法使用它们,因为我的用例需要HTML / CSS无法实现的功能。 / p>
答案 0 :(得分:1)
没有一个。至少不是作为公共职能。
但是,受保护的属性$fgcolor
是可以直接返回给setTextColorArray
的数组。知道这一点-扩展类以为当前文本颜色提供吸气剂很容易。
<?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
中。)
答案 1 :(得分:1)
我需要在我的问题中编写的可重用帮助程序类的此功能。由于此帮助程序类应与所有TCPDF实例一起使用,因此扩展TCPDF以添加EPB答案中建议的其他公共方法不是一个选择。我决定使用ReflectionProperty:
public void execute() {
Single.zip(getFirstApiResponse(), getSecondApiResponse(),
(first, second) -> {
//now you have both
return Pair.of(first, second);
}).subscribe(pair -> {/**do stuff**/});
}