TCPDF: обрезать текст по ширине ячейки - PullRequest
4 голосов
/ 17 ноября 2011

Я генерирую отчет в формате PDF с использованием метода Cell в TCPDF.Текст, напечатанный методом Cell, выходит за пределы, указанные в методе.Я хочу напечатать только ту часть текста, которая умещается в заданную ширину, но не должна выходить за пределы или переноситься на следующую строку.Мне не нужна стратегия растягивания шрифтов.

Я много искал, но не смог найти решение.Есть ли другой способ / способ справиться с этим?(Я использовал setfillcolor (255) для достижения визуального эффекта. Но текст все еще там, невидим; раскрывается, когда вы пытаетесь выбрать.)

вот моя часть кода.

    $pdf->SetFillColor(255); // only visual effect
    $pdf->Cell(36, 0, "A very big text in the first column, getting printed in 3.6cm width", 0, 0, 'L', true);
    $pdf->Cell(20, 0, "Data 1", 0, 0, 'L', true);
    $pdf->Cell(20, 0, "Data 2", 0, 0, 'L', true);

Большое спасибо.

1 Ответ

5 голосов
/ 22 февраля 2012

Я нашел ответ здесь Николая Асуни, который является основным автором TCPDF.Следующий код, предоставленный пользователем fenstra , работает для меня:

// Start clipping.      
$pdf->StartTransform();

// Draw clipping rectangle to match html cell.
$pdf->Rect($x, $y, $w, $h, 'CNZ');

// Output html.
$pdf->writeHTMLCell($w, $h, $x, $y, $html);

// Stop clipping.
$pdf->StopTransform();

Насколько я могу судить, прямоугольник отсечения не будет учитывать какие-либо отступы для отображаемого текста,поэтому вы применяете правильную математику к ширине и высоте Rect, если вам нужно имитировать поведение MultiCell на этом конкретном случае.

...