微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

TCPDF:为什么多单元格的位置是从另一个元素继承的?

如何解决TCPDF:为什么多单元格的位置是从另一个元素继承的?

我使用 TCPDF 创建 PDF 输出。 在页面的左侧,我想要几个带有旋转文本的单元格或块。 如果文本大于宽度(或实际高度,旋转时),文本应被截断。

通过这样做,我可以在特定位置制作特定大小的未旋转框:

$roleheight=160/count($rolenames);
$x=4;
$y=18;
$w=$roleheight;
$h=20;
$text="The quick brown fox jumps over the lazy dog,The quick brown fox jumps over the lazy dog,The quick brown fox jumps over the lazy dog";
$pdf->MultiCell($w,$h,"","J",true,4,18,false,5,'T',false);
$pdf->StartTransform();
$pdf->Rect($x,$y,$w,'CNZ');
$pdf->writeHTMLCell($w,$x,$text,false);
$pdf->StopTransform();

我可以通过这样做来制作一个特定大小的旋转框:

$pdf->StartTransform();
$pdf->Rotate(90);
$pdf->MultiCell($w,$y-50,false);
$pdf->StopTransform();

但是第二个框不尊重我的位置,第一个框不能旋转。

我尝试添加 $pdf->Rotate(90);到 Rect 之前的第一个框,在 Rect 和 writeHTMLCell 之间以及 writeHTMLCell 之后,但没有运气

我尝试通过添加或减去一个数字(例如 100)来更改第二个框的 $x 和 $y,但这会将框置于非常意想不到的位置。

如果我注释掉第一个框,第二个框也不会出现。所以不知何故,盒子 2 的位置是从盒子 1 继承的。但是如何以及为什么?

解决方法

我仍然不明白为什么 Multicell 有参数 X 和 Y,而那些没有设置 X 和 Y 位置。我必须在多单元格前面添加一个 SetXY。 此外,我不知道为什么我必须在 x 和 y 处添加 +10 才能将框放置在正确的位置。 但这确实奏效了:

$roleheight=160/count($rolenames);
$x=4;
$y=18;
$y=$y-$roleheight-2;
for ($i=0;$i<count($rolenames);$i++)
{
    $x=($x+$roleheight)-$roleheight;
    $y=($y+$roleheight)+1;
    $w=$roleheight;
    $h=20;
    $pdf->SetXY($x+10,$y+10);
    $pdf->StartTransform();
    $pdf->Rotate(90);
    $pdf->MultiCell($w,$h,$rolenames[$i],"L",true,$x,$y,false,5,'T',false);
    $pdf->StopTransform();

}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。