我正在使用TCPDF->使用$ firstline = TRUE写入,这样我就可以从较长的段落中发出一行,然后控制下一行的去向(例如,流向下一页或同一行上的另一个框)页)。这工作正常,并避免必须显式测量字符串长度和包装的位置 - TCPDF为我做。
但是,有时候我想改变中间的文字特征(颜色,重量,插入图像,等等)。所以我将文本写入Write,并假设它完全适合(Write不会返回任何剩余的字符串),我可以设置新的特性,然后将下一位写入Write。
问题是在Write调用之后x位置似乎重置为左边距,无论是否有任何文本遗留。 GetX并没有给我我需要的位置。在TCPDF-> $ endlinex的代码中,这个值似乎是,但我必须取消保护该变量才能使用它,这不是一个好的解决方案。
是否有正确的方法在写入调用后写入字符串末尾的x位置?
(我尝试了$ firstblock,但这似乎没有任何区别,无论是TRUE还是FALSE)
(我知道我可以将其标记为HTML,但我的源代码不是HTML,而且WriteHTML调用并不提供对我需要的文本流的控制。)
答案 0 :(得分:0)
您使用的是什么版本的TCPDF?
我在撰写本文时(6.2.9)使用最新版本运行了以下代码,并且在调用Write()
后X位置未重置。
$pdf = new TCPDF();
$pdf->SetPrintHeader( false );
$pdf->SetPrintFooter( false );
$pdf->AddPage();
$pdf->SetMargins( 10, 10, 10, 10 );
echo $pdf->GetX(), "\n";
$pdf->SetFont( 'helvetica' );
$pdf->Write( 5, 'This is a test.' );
echo $pdf->GetX(), "\n";
$pdf->SetFont( 'helvetica', 'B' );
$pdf->Write( 5, 'This is a test.' );
echo $pdf->GetX(), "\n";
$pdf->SetFont( 'helvetica' );
$pdf->Write( 5, 'This is a test.' );
echo $pdf->GetX(), "\n";
$pdf->output( 'test.pdf', 'F' );
当我运行此脚本时,输出如下:
10.00125
34.939816666667
61.762216666667
86.700783333333
...结果PDF有字符串"这是一个测试。"所有在一条线上,正常,粗体,规则,正如您期望阅读代码。
我很想知道运行它时该脚本的结果是什么。