Я обновил свою библиотеку tcpdf и теперь сталкиваюсь с таким странным поведением, maxheight
параметр переопределяет minimum height
параметр, даже если это содержание ячейки не так высока.
От документы это говорит:
- $ h: (float) Минимальная высота ячейки. Ячейка расширяется автоматически при необходимости.
- $ maxh: (float) максимальная высота. Должно быть> = $ h и меньше оставшегося места внизу страницы или 0 для отключения
особенность. Эта функция работает, только когда $ ishtml = false.
мой $maxh
выше чем $h
, $ishtml
является false
:
$pdf->MultiCell(59, 5, "short", 1, 'L', true, 0, 45, 154, true, 0, false, false, 11, 'T', true);
Так height
является 5
а также max height
является 11
, Клетка всегда 11
, даже если содержание действительно короткое.
Как установить высоту ячейки минимум от 5 до максимум 11, и она будет расширяться только тогда, когда контента на самом деле так много, что будет достигнута новая строка?
Текущий:
Желаемая:
а также:
Это может показаться немного неясным в документации, но вам нужно отключить $fitcell
опция (это последний аргумент MultiCell()
) для достижения ожидаемого поведения. Строка должна выглядеть так:
$pdf->MultiCell(59, 5, "short", 1, 'L', true, 0, 45, 154, true, 0, false, false, 11, 'T', false);
(Обратите внимание false
вместо true
в конце).
Если $fitcell
Включено. TCPDF будет сжимать большие тексты, чтобы соответствовать ячейке, применяя меньший размер шрифта, но не будет пытаться уменьшить ячейку, если текст меньше, чем ячейка.
Поскольку TCPDF также не будет пытаться увеличить ячейку, когда $fitcell
отключено, вам нужно будет увеличить параметр max height, чтобы добавить больше контента.
Вот краткий пример:
require_once 'tcpdf/tcpdf.php';
// Create new pdf
$pdf = new TCPDF();
// Add a page
$pdf->AddPage();
// Set color for background
$pdf->SetFillColor(255, 255, 127);
// Add 2 cells
$pdf->MultiCell(59, 5, "one line", 1, 'L', true, 0, 50, 50, true, 0, false, false, 21, 'T', false);
$pdf->MultiCell(59, 5, "badger badger badger badger badger badger badger badger - mushroom! mushroom!", 1, 'L', true, 0, 50, 60, true, 0, false, false, 21, 'T', false);
$pdf->Output();
Вынесено:
В комментариях вы сказали:
Я хочу сжать текст, если текст не помещается без сжатия, позволяя ячейке расширяться до максимальной высоты. в вашем ответе одна строка и барсук .. одинаковый размер шрифта
Если вы хотите добиться этого, вам нужно отключить $maxh
функция и включить $fitcell
особенность, вот так:
require_once 'tcpdf/tcpdf.php';
// Create new pdf
$pdf = new TCPDF();
// Add a page
$pdf->AddPage();
// Set color for background
$pdf->SetFillColor(255, 255, 127);
// Add 2 cells
$pdf->MultiCell(59, 11, "short", 1, 'L', true, 0, 50, 50, true, 0, false, false, 0, 'T', true);
$pdf->MultiCell(59, 11, "badger badger badger badger badger badger badger badger - mushroom! mushroom!", 1, 'L', true, 0, 50, 60, true, 0, false, false, 0, 'T', true);
Вынесено:
Однако теперь ячейка, содержащая «short», не будет сокращаться.
Заметка
После игры с этими обоими примерами я понял проблему. В настоящее время я не вижу способа, чтобы иметь как сокращенный блок с «коротким», так и блок с длинным текстом с меньшим размером шрифта. Тем не менее, я буду держать свой ответ, вероятно, это хорошая отправная точка для других.
Других решений пока нет …