Why is this code to center text on a PDF using the PHP Zend_Pdf Library not working?

前端 未结 3 807
忘掉有多难
忘掉有多难 2021-02-09 15:14

I\'m attempting to dynamically create PDF documents on the server and send them to the client using the Zend_Pdf library. All text on the PDF needs to be center aligned to the p

3条回答
  •  暖寄归人
    2021-02-09 15:58

    In case anyone else runs into a similar problem, the issue is here:

    function getTextWidth($text, $font, $font_size) {
        $drawing_text = iconv('', 'UTF-8', $text);
        $characters    = array();
        for ($i = 0; $i < strlen($drawing_text); $i++) {
            $characters[] = (ord($drawing_text[$i++]) << 8) | ord ($drawing_text[$i]);
        }
        $glyphs        = $font->glyphNumbersForCharacters($characters);
        $widths        = $font->widthsForGlyphs($glyphs);
        $text_width   = (array_sum($widths) / $font->getUnitsPerEm()) * $font_size;
        return $text_width;
    }
    

    When building the characters array, the characters are being loaded incorrectly - 8 bits, not 16.

    $characters[] = ord ($drawing_text[$i]);
    

    This solves the problem, and correctly calculates text width.

提交回复
热议问题