Hauptmenü

Werkzeuge

Kategorien

Archiv

TextWithRotation und tFPDF / UTF8

Erstellt in Allgemein am 14. Januar 2021 vom Daschmi

Nutzt man die Erweiterung von FPDF für TextRotation (http://www.fpdf.org/en/script/script2.php) funktioniert diese nicht direkt mit tFPDF (http://www.fpdf.org/en/script/script92.php) und UTF8 Fonts. Folgende kleine Anpassung in der Funktion TextWithRotation löst das Problem:

function TextWithRotationUTF($x, $y, $txt, $txt_angle, $font_angle = 0) {

    $font_angle += 90 + $txt_angle;
    $txt_angle *= M_PI / 180;
    $font_angle *= M_PI / 180;

    $txt_dx = cos($txt_angle);
    $txt_dy = sin($txt_angle);
    $font_dx = cos($font_angle);
    $font_dy = sin($font_angle);

    if ($this->unifontSubset) {

        $txt2 = '('.$this->_escape($this->UTF8ToUTF16BE($txt, false)).')';
        foreach ($this->UTF8StringToArray($txt) as $uni)
        $this->CurrentFont['subset'][$uni] = $uni;

    } else {

        $txt2 = '('.$this->_escape($txt).')';

    }

    $s = sprintf('BT %.2f %.2f %.2f %.2f %.2f %.2f Tm %s Tj ET',
            $txt_dx, $txt_dy, $font_dx, $font_dy,
            $x*$this->k, ($this->h-$y)*$this->k, $txt2);

    if ($this->ColorFlag) $s = 'q '.$this->TextColor.' '.$s.' Q';

    $this->_out($s);

}