Я создаю PDF с помощью fPDF.fPDF: как вычеркнуть/зачеркнуть оправданный текст в многорежимном режиме?
Мне нужно прочертить длинный текст внутри MultiCell. Текст оправдан влево и вправо, что, вероятно, является источником проблемы.
Вот мой код:
//get the starting x and y of the cell to strikeout
$strikeout_y_start = $pdf->GetY();
$strikeout_x = $pdf->getX();
$strikeText = "Some text with no New Lines (\n), which is wrapped automaticly, cause it is very very very very very very very very very very long long long long long long long long long long long long long long long long long long"
//draw the text
$pdf->MultiCell(180, 4, $strikeText);
//get the y end of cell
$strikeout_y_end = $pdf->GetY();
$strikeout_y = $strikeout_y_start+2;
$strikeCount = 0;
for ($strikeout_y; $strikeout_y < $strikeout_y_end - 4; $strikeout_y+=4) {
$strikeCount++;
//strike out the full width of all lines but last one - works OK
$pdf->Line($strikeout_x, $strikeout_y, $strikeout_x + 180, $strikeout_y);
}
//this works, but gives incorrect results
$width = $pdf->GetStringWidth($strikeText);
$width = $width - $strikeCount*180;
//the line below will strike out some text, but not all the letters of last line
$pdf->line($strikeout_x, $strikeout_y, $strikeout_x+$width, $strikeout_y);
Проблема заключается в том, что, поскольку текст в MULTICELL оправдан (и должны быть), то пространствас в предыдущих строках шире, чем GetStringWidth предполагает, так GetStringWidth недооценивает полная ширина этого текста.
В результате последняя строка разглажена, скажем, на 70%, а некоторые буквы на конце ее не поглажены.
Любые идеи о том, как рассчитать ширину последней строки в многорежимном пространстве?
Извините, что ответил сам. У меня была идея, как решить эту проблему сразу после того, как я разместил здесь вопрос – SWilk