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="??"/>.