我正在开发电子证书网页。 我已经管理了加载证书模板并在其上面书写(参加者姓名,活动标题和活动日期)。 但是在定位这三条信息时,无论它们有多长,我都无法将它们放在中心位置。他们总是从x点开始。
检查我的工作结果:
代码:
<?php
require_once('fpdf.php');
require_once('fpdi.php');
$pdf =& new FPDI();
$pdf->addPage('L');
$pagecount = $pdf->setSourceFile('Certificate.pdf');
$tplIdx = $pdf->importPage(1);
$pdf->useTemplate($tplIdx);
$pdf->SetFont('Times','I',18);
$pdf->SetTextColor(0,0,0);
$pdf->SetXY(120, 62);
$pdf->Write(0, "Attendee Name");
$pdf->SetXY(120, 102);
$pdf->Write(0, "Event Name");
$pdf->SetXY(120, 140);
$pdf->Write(0, "Event Date");
$pdf->Output();
?>
无论文本多长时间,文本是否存在中心?
意思是没有固定x点。但是,y点结果非常好。
答案 0 :(得分:3)
所以我以前做过两种方式,最可能是最简单的方法: 由于您在该行上只有1个条目(参加者姓名或活动名称等) 在最左边的点开始一个单元格,让单元格运行页面的整个宽度,然后指定中心选项:
$pdf->SetXY(0,62);
//0 extends full width, $height needs to be set to cell height.
$pdf->Cell(0, $height, "Attendee Name", 0, 0, 'C');
另一种选择是计算中心,并相应地设置X:
//how wide is the page?
$midPtX = $pdf->GetPageWidth() / 2;
//now we need to know how long the write string is
$attendeeNameWidth = $pdf->GetStringWidth($attendeeName);
//now we need to divide that by two to calculate the shift
$shiftLeft = $attendeeNameWidth / 2;
//now calculate our new X value
$x = $midPtX - $shiftLeft;
//now apply your shift for the answer
$pdf->setXY($x, 62);
$pdf->Write(0, "Attendee Name");
然后,您可以为每个其他元素重复上述操作。
答案 1 :(得分:0)
您需要一种方法来计算字符串的字符串长度(例如,120像素),并且您需要知道页面宽度(以像素为单位)。
此时你将字符串定位在x =(pagewidth / 2 - stringwidth / 2)并且鲍勃是你的叔叔。
在FPDI中,您可以使用GetStringWidth
和GetPageWidth
执行此操作。
您可以使用高度进行相同的调整。例如,您可以将字符串拆分为单词,计算每个字符串的宽度,并确定它何时过多。这样,您可以将字符串拆分为两个,并将每个部分居中。