我正在使用 fPDF 生成 PDF。
我需要删除 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);
问题在于,由于多单元格中的文本是合理的(并且必须如此),前几行中的 spacec 比 GetStringWidth 假设的要宽,因此 GetStringWidth 低估了此文本的整个宽度。
结果,最后一行被划掉了,比如说,70%,它末尾的一些字母没有被划掉。
任何想法如何计算多单元格中最后一行的宽度?