65 lines
1.9 KiB
PHP
65 lines
1.9 KiB
PHP
|
<?php
|
||
|
class Scores_Pdf_Page extends Zend_Pdf_Page
|
||
|
{
|
||
|
|
||
|
/**
|
||
|
* Cette fonction retourne la largeur typographique d'un string.
|
||
|
* @param string $text_line le texte à utiliser
|
||
|
* @return integer la largeur du texte
|
||
|
*/
|
||
|
protected function _getTextWidth($text_line)
|
||
|
{
|
||
|
$current_font = $this->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;
|
||
|
}
|
||
|
|
||
|
|
||
|
}
|