Получить текущий цвет текста в TCPDF - PullRequest
0 голосов
/ 27 августа 2018

TCPDF позволяет установить цвет текста методом SetTextColor, но мне не удалось найти какой-либо метод для получения текущего цвета текста. Это просто не поддерживается или я что-то пропустил?

Вариант использования: я пишу многоразового помощника для TCPDF, который должен изменить цвет текста, но должен сбросить его после того, как это будет сделано.

Отказ от ответственности: я знаю, что текущая версия TCPDF устарела , но новая версия еще не готова . Я знаю, что существуют другие варианты рендеринга PDF-файлов (например, Chrome Headless), которые проще в использовании и более стабильны для многих случаев использования, но я не могу их использовать, потому что мои варианты использования требуют функциональности, невозможной с HTML / CSS.

Ответы [ 2 ]

0 голосов
/ 01 ноября 2018

Мне нужна была эта функциональность для вспомогательного класса многократного использования, как написано в моем вопросе.Так как этот вспомогательный класс должен работать со всеми экземплярами TCPDF, расширяющими TCPDF для добавления дополнительного открытого метода, как предложено в ответе EPB, это не вариант.Я решил использовать ReflectionProperty:

$r = new \ReflectionObject($pdf);
$p = $r->getProperty('fgcolor');
$p->setAccessible(true);
$textColor = $p->getValue($pdf);
0 голосов
/ 28 августа 2018

Нет ни одного.По крайней мере, не как публичная функция.

Однако защищенное свойство $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.)

...