bomberman
26.02.2008, 16:00
Hallo,
gibt es eine Möglichkeit bei Zend_Pdf den Text z.B. rechts auszurichten.
Ich muss halt Zahlen untereinander wegschreiben für unsere Statistiken. Nur ist
4,32
1.031,31
nicht besonders leserlich.
Hat jemand Ideen oder Lösungen?
Bleistift
26.02.2008, 16:09
Einfach mit Leerzeichen auffüllen? ;)
TobiasPl
03.04.2008, 18:39
Hi!
Dazu kann ich dir mit der folgenden Funktion weiterhelfen:
/**
* Calculate the width of a string considering the font-name and -size
*
* @param string $string
* @param Zend_Pdf_Font $font
* @param integer $font_size
* @return integer
*/
function fontStringWidth($string, $font, $fontSize)
{
#if (strpos($string,utf8_encode('ö'))!==false) { echo $string; die(); }
$pattern_s = array(utf8_encode('ö'),utf8_encode('ü'),utf8_enc ode('ä'),
utf8_encode('Ö'),utf8_encode('Ü'),utf8_encode('à „'),
utf8_encode('ß'));
$replace_s = array(utf8_encode('o'),utf8_encode('u'),utf8_encod e('a'),
utf8_encode('O'),utf8_encode('U'),utf8_encode('A') ,
utf8_encode('S'));
$string = str_replace($pattern_s,$replace_s,$string);
# Inoffizielle Funktion aus dem Zend-WiKi
#$drawingString = iconv('', 'UTF-16BE', $string);
$drawingString = iconv('', 'UTF-16BE', $string);
$characters = array();
for ($i = 0; $i < strlen($drawingString); $i++) {
$characters[] = (ord($drawingString[$i++]) << 8) | ord($drawingString[$i]);
}
$glyphs = $font->glyphNumbersForCharacters($characters);
$widths = $font->widthsForGlyphs($glyphs);
$stringWidth = (array_sum($widths) / $font->getUnitsPerEm()) * $fontSize;
return $stringWidth;
}Damit kriegst du die breite von nem String raus.
Also legst du einfach die Position des rechten Rands fest (sagen wir mal 300) und zeichnest dann an die Position x = 300-fontStringWidth(deineZahl,deineFont,deineGröße)
So ist alles rechts ausgerichtet.
Tobias
vBulletin® v3.6.12, Copyright ©2000-2010, Jelsoft Enterprises Ltd.