20 kwietnia 2011

Apache FOP

Znowu wróciłem do FOP'a. Pomyślałem sobie, że jak znajdę sposób na obliczenie szerokości kolumn w tabeli na podstawie znajdujących się tam danych i ustawię tą szerokość na sztywno, to będzie można spokojnie obejść problem table-layout="fixed". W PHP mamy do dyspozycji funkcję imagettfbbox, dzięki której można wyliczyć szerokość tekstu przy zastosowaniu określonej czcionki. Najprościej można to zrobić tak:
function get_text_width($font,$font_size,$text) {
    $box = imagettfbbox($font_size,0,$font,$text);
    return $box[4];
}
Gdzie: $font - ścieżka do użytej czcionki $font_size - rozmiar czcionki dla której ma być wyliczona szerokość tekstu $text - tekst dla którego wyliczymy szerokość. Przed wygenerowanie właściwej tabeli w XSL-FO, wyliczam maksymalne szerokości dla danych z każdej kolumny i na tej podstawie generuję tagi <fo:table-column column-width="??"/>.

2 komentarze:

Jagoot pisze...

Witam, nie widze nigdzie zadnej innej formy kontaktu wiec postanowilem napisac jako komentarz pod tym wpisem za co z gory przepraszam.
Znalazlem w archiwach Twoj post na temat pobierania kafelkow z zumi i napisales tam rozniez ze ukaze sie jeszcze druga wersja skryptu gdzie bedzie konwersja tilow googla do zumi, wlasnie sie interesuje tym tematem i chcialem w zwiazku z tym zapytac czy taki skrypt napisales/moglbys udostepnic, lub czy moglbys jakos przyblizyc mi temat takiej konwersji czyli czym sa dane oznaczenia w google i zumi i jak sie do siebie maja.
Z gory dzieki za pomoc
Pozdrawiam

mindc pisze...

Dzięki za przypomnienie tematu, ostatnio zumi zmieniło trochę format nazw swoich plików png, więc tym bardziej temat do odświeżenia...