TroxyMedlem sedan mars 20041 505 inlägg Hej,
Jag hämtar text från en databas som ska skrivas ut på en bild med hjälp av GD Library. Nu undrar jag om det på något sätt går att begränsa text till en yta. Ex. jag vill att texten ska löpa 200 px, sedan radbrytning. Jag lyckas bara skriva ut allt som en enda lång rad.
Mvh Emil
PeddaMedlem sedan juni 20006 032 inlägg Detta är inget jag har testat nån gång men efter att ha letat lite i manualen så hittade jag detta exempel:
<?php
function printWordWrapped(&$image, $top, $left, $maxWidth, $font, $color, $text, $textSize) {
$words = explode(' ', strip_tags($text)); // split the text into an array of single words
$line = '';
while (count($words) > 0) {
$dimensions = imagettfbbox($textSize, 0, $font, $line.' '.$words[0]);
$lineWidth = $dimensions[2] - $dimensions[0]; // get the length of this line, if the word is to be included
if ($lineWidth > $maxWidth) { // if this makes the text wider that anticipated
$lines[] = $line; // add the line to the others
$line = ''; // empty it (the word will be added outside the loop)
}
$line .= ' '.$words[0]; // add the word to the current sentence
$words = array_slice($words, 1); // remove the word from the array
}
if ($line != '') { $lines[] = $line; } // add the last line to the others, if it isn't empty
$lineHeight = $dimensions[1] - $dimensions[7]; // the height of a single line
$height = count($lines) * $lineHeight; // the height of all the lines total
// do the actual printing
$i = 0;
foreach ($lines as $line) {
imagettftext($image, $textSize, 0, $left, $top + $lineHeight * $i, $color, $font, $line);
$i++;
}
return $height;
}
?>