getFont() ; $font_size = $this->getFontSize() ; // initialisation des tableaux $glyph_array = $char_array = array(); $total_item_width = 0; // on converti le texte en tableau et on récupère les codes ASCII $text_array = str_split($text_line, 1); foreach($text_array as $character) { $char_array[] = ord($character); } // on récupère ensuite le numéro du glyphe d'après le code ASCII $glyph_array = $current_font->glyphNumbersForCharacters($char_array) ; // Zend_Pdf_Font nous permet de récupérer la largeur des glyphes $text_width = $current_font->widthsForGlyphs($glyph_array); // on additionne tous les caractères pour obtenir la largeur totale foreach($text_width as $char_width) { $total_item_width += $char_width; } // petite transformation pour obtenir notre taille en quelque chose d'utilisable return ($total_item_width / 1000) * $font_size; } /** * Dessine du texte aligné à droite de $x */ public function drawTextAlignRight($text, $x, $y) { $width = $this->_getTextWidth($text) ; // on écrit le texte à la position donnée - la largeur du texte $this->drawText($text, $x - $width, $y) ; } /** * Dessine du texte centré sur $x */ public function drawTextAlignCenter($text, $x, $y) { $width = $this->_getTextWidth($text) ; // on écrit le texte à la position donnée - la moitié de la largeur du texte $this->drawText($text, $x - ($width / 2), $y) ; } /** * * @param number $bottom */ public function heightWithMargin($bottom = 0) { $current_font = $this->getFont(); return $current_font->getLineHeight() + $bottom; } }