Переопределяет ли параметр maxheight TCPDF MultiCell параметр высоты, даже если это не требуется?

Я обновил свою библиотеку 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, и она будет расширяться только тогда, когда контента на самом деле так много, что будет достигнута новая строка?

Текущий:

введите описание изображения здесь

Желаемая:

введите описание изображения здесь
а также:

введите описание изображения здесь

1

Решение

Это может показаться немного неясным в документации, но вам нужно отключить $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», не будет сокращаться.

Заметка

После игры с этими обоими примерами я понял проблему. В настоящее время я не вижу способа, чтобы иметь как сокращенный блок с «коротким», так и блок с длинным текстом с меньшим размером шрифта. Тем не менее, я буду держать свой ответ, вероятно, это хорошая отправная точка для других.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]