如何在tcpdf中添加图片和文字旋转180度的div
How to add a div with image and text 180 degree rotate in tcpdf
我已经为这个解决方案搜索了很多但没有运气,因为 tcpdf 的文档很差,所以我什么也没找到,我需要的是使用 tcpdf 打印为 pdf 的铭牌,模板非常简单,就像图片是
但问题是我无法正确旋转顶部。这是我的代码
$obj_pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
$obj_pdf->AddPage('L' , 'A5');
$obj_pdf->StartTransform();
$obj_pdf->Rotate(-180);
$obj_pdf->image($logo1, 165 , 65, 0, 90, "PNG", "" , "M", true);
$obj_pdf->image($logo2, 0 , 65, 0, 90, "PNG", "" , "R", true);
$name = $functional_user->first_name .' '. $functional_user->last_name ;
$obj_pdf->SetTopMargin(-120);
$obj_pdf->SetLeftMargin(10);
$obj_pdf->setCellPaddings(0,0,0,0);
$tbl = '<br> <div class= "rotate" style="transform: rotate(180deg);">
<table cellpadding="2" >
<tr>
<td><h1 style = "font-size: 40px; line-height: 1.3">'.$name.' </h1>
<br><br><span style="font-size: 13px">
'.$org_logo_text.' </span>
</td>
</tr>
</table>
</div>';
$obj_pdf->writeHTML($tbl, true, false, false, false, '');
$obj_pdf->StopTransform();
$obj_pdf->SetTopMargin(78);
$obj_pdf->image($logo1, 10 , 70, 40, 20, "PNG", "" , "M", true);
$obj_pdf->image($logo2, 165 , 70, 40, 20, "PNG", "" , "R", true);
$name = $functional_user->first_name .' '. $functional_user->last_name ;
$obj_pdf->SetTopMargin(100);
$obj_pdf->SetLeftMargin(10);
$obj_pdf->setCellPaddings(0,0,0,0);
$tbl = '<br>
<table cellpadding="2" >
<tr>
<td><h1 style = "font-size: 40px; line-height: 1.3">'.$name.' </h1>
<br><br><span style="font-size: 13px">
'.$org_logo_text.' </span>
</td>
</tr>
</table>';
$obj_pdf->writeHTML($tbl, true, false, false, false, '');
$obj_pdf->lastPage();
$obj_pdf->Output('/tmp/Nameplate_' . $i . '.pdf', 'F');
$obj_pdf->Close();
有人可以帮我解决这个问题吗??
我自己解决了这个问题,我做错的是使用了 rotate($angle) 函数。它确实旋转了该部分,但它以 (0,0) 或左上角为中心点,因此旋转后整个部分位于 pdf 页面之外。所以最后我使用 rotate($angle, $px, $py) 函数,其中 px 和 py 将从相应的轴推动该部分并放置所需的位置。这是我的代码
$obj_pdf->StartTransform();
$angle= 180;
$px= 105;
$py= 36;
$obj_pdf->Rotate($angle, $px, $py);
$obj_pdf->image($company_logo, 10 , 0, 40, 20, "PNG", "" , "M", true);
$obj_pdf->image($organization_logo, 165 , 0, 40, 20, "PNG", "" , "R", true);
$name = $functional_user->first_name .' '. $functional_user->last_name ;
$obj_pdf->SetTopMargin(27);
$obj_pdf->SetLeftMargin(10);
$fz = "35px";
if( strlen( $name )> 20) $fz = "40px";
else if( strlen($name)> 18 ) $fz = "33px";
$tbl = '<br><table cellpadding="1" >
<tr>
<td><h1 style = "font-size: '.$fz.'; line-height: 1.3">'.$name.' </h1>
<br><br><span style="font-size: 13px">
'.$org_logo_text.' </span>
</td>
</tr>
</table>';
$obj_pdf->writeHTML($tbl, true, false, false, false, '');
$obj_pdf->StopTransform();
我已经为这个解决方案搜索了很多但没有运气,因为 tcpdf 的文档很差,所以我什么也没找到,我需要的是使用 tcpdf 打印为 pdf 的铭牌,模板非常简单,就像图片是
但问题是我无法正确旋转顶部。这是我的代码
$obj_pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
$obj_pdf->AddPage('L' , 'A5');
$obj_pdf->StartTransform();
$obj_pdf->Rotate(-180);
$obj_pdf->image($logo1, 165 , 65, 0, 90, "PNG", "" , "M", true);
$obj_pdf->image($logo2, 0 , 65, 0, 90, "PNG", "" , "R", true);
$name = $functional_user->first_name .' '. $functional_user->last_name ;
$obj_pdf->SetTopMargin(-120);
$obj_pdf->SetLeftMargin(10);
$obj_pdf->setCellPaddings(0,0,0,0);
$tbl = '<br> <div class= "rotate" style="transform: rotate(180deg);">
<table cellpadding="2" >
<tr>
<td><h1 style = "font-size: 40px; line-height: 1.3">'.$name.' </h1>
<br><br><span style="font-size: 13px">
'.$org_logo_text.' </span>
</td>
</tr>
</table>
</div>';
$obj_pdf->writeHTML($tbl, true, false, false, false, '');
$obj_pdf->StopTransform();
$obj_pdf->SetTopMargin(78);
$obj_pdf->image($logo1, 10 , 70, 40, 20, "PNG", "" , "M", true);
$obj_pdf->image($logo2, 165 , 70, 40, 20, "PNG", "" , "R", true);
$name = $functional_user->first_name .' '. $functional_user->last_name ;
$obj_pdf->SetTopMargin(100);
$obj_pdf->SetLeftMargin(10);
$obj_pdf->setCellPaddings(0,0,0,0);
$tbl = '<br>
<table cellpadding="2" >
<tr>
<td><h1 style = "font-size: 40px; line-height: 1.3">'.$name.' </h1>
<br><br><span style="font-size: 13px">
'.$org_logo_text.' </span>
</td>
</tr>
</table>';
$obj_pdf->writeHTML($tbl, true, false, false, false, '');
$obj_pdf->lastPage();
$obj_pdf->Output('/tmp/Nameplate_' . $i . '.pdf', 'F');
$obj_pdf->Close();
有人可以帮我解决这个问题吗??
我自己解决了这个问题,我做错的是使用了 rotate($angle) 函数。它确实旋转了该部分,但它以 (0,0) 或左上角为中心点,因此旋转后整个部分位于 pdf 页面之外。所以最后我使用 rotate($angle, $px, $py) 函数,其中 px 和 py 将从相应的轴推动该部分并放置所需的位置。这是我的代码
$obj_pdf->StartTransform();
$angle= 180;
$px= 105;
$py= 36;
$obj_pdf->Rotate($angle, $px, $py);
$obj_pdf->image($company_logo, 10 , 0, 40, 20, "PNG", "" , "M", true);
$obj_pdf->image($organization_logo, 165 , 0, 40, 20, "PNG", "" , "R", true);
$name = $functional_user->first_name .' '. $functional_user->last_name ;
$obj_pdf->SetTopMargin(27);
$obj_pdf->SetLeftMargin(10);
$fz = "35px";
if( strlen( $name )> 20) $fz = "40px";
else if( strlen($name)> 18 ) $fz = "33px";
$tbl = '<br><table cellpadding="1" >
<tr>
<td><h1 style = "font-size: '.$fz.'; line-height: 1.3">'.$name.' </h1>
<br><br><span style="font-size: 13px">
'.$org_logo_text.' </span>
</td>
</tr>
</table>';
$obj_pdf->writeHTML($tbl, true, false, false, false, '');
$obj_pdf->StopTransform();