php - TCPDF 问题:如何对齐文本和图像?
问题描述
我想通过 PHP 生成 PDF 格式的简历。为此, TCPDF看起来像是一个灵活的库。假设这是预期的结果:
我刚开始学习TCPDF,到目前为止我已经完成了公司名称,名称和标题,但是它们不在同一条线上。
这是我的代码:
<?php
require_once('tcpdf/config/lang/eng.php');
require_once('tcpdf/tcpdf.php');
class MYPDF extends TCPDF {
//Page header
public function Header() {
// Logo
$image_file = 'umbrella_logo.jpg';
$this->Image($image_file, 10, 10, 45, '', 'JPG', '', 'T', false, 300, '', false, false, 0, false, false, false);
// Set font
$this->SetFont('helvetica', 'B', 20);
}
}
// create new PDF document
$pdf = new MYPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
// set document information
$pdf->SetCreator(PDF_CREATOR);
$pdf->SetAuthor('Umbrella Corporation');
$pdf->SetTitle('Employee Resume');
// set default header data
$pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE.' My PDF', PDF_HEADER_STRING, array(0,64,255), array(0,64,100));
$pdf->AddPage();
$pdf->SetXY(15, 30);
$pdf->Cell(25, 10, 'Tobias Rieper', 0, $ln=0, 'C', 0, '', 0, false, 'B', 'B');
$pdf->SetXY(15, 35);
$pdf->Cell(20, 10, 'Senior Biochemist', 0, $ln=0, 'C', 0, '', 0, false, 'B', 'B');
$pdf->setFooterData(array(0,64,0), array(0,64,128));
$pdf->Output('example_001.pdf', 'I');
?>
如何解决这个问题?
解决方案
首先,您对单元格使用居中对齐而不是左对齐,因此您的单元格居中对齐,宽度分别为 25 毫米和 20 毫米。
相反,将参数 6 从'C'
更改'L'
为您的Cell
调用,这会将它们更改为左对齐。这应该让你的细胞按照你期望的方式排列。
接下来,用于标题图像和文本对齐。由于您正在尝试将单元格与图像的边界(或者可能是图像内部的某些内容)对齐,因此您可能希望删除默认的单元格填充$pdf->setCellPadding(0);
然后,您可以根据需要调整图像或单元格的位置。在这里,我让它们以 10 毫米的横坐标对齐。
<?php
//Note that my paths are different, use your project's appropriate paths.
require_once('TCPDF-6.2.17/tcpdf.php');
class MYPDF extends TCPDF {
//Page header
public function Header() {
// Logo
// Set font
$image_file = 'lymle.jpg';
$this->Image($image_file, 10, 10, 45, '', 'JPG', '', 'T', false, 300, '', false, false, 0, false, false, false);
$this->SetFont('helvetica', 'B', 20);
}
}
// create new PDF document
$pdf = new MYPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
// set document information
$pdf->SetCreator(PDF_CREATOR);
$pdf->SetAuthor('Umbrella Corporation');
$pdf->SetTitle('Employee Resume');
// set default header data
$pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE.' My PDF', PDF_HEADER_STRING, array(0,64,255), array(0,64,100));
$pdf->AddPage();
$pdf->setCellPadding(0);
$pdf->SetXY(10, 30);
$pdf->Cell(25, 10, 'Tobias Rieper', 0, $ln=0, 'L', 0, '', 0, false, 'B', 'B');
$pdf->SetXY(10, 35);
$pdf->Cell(20, 10, 'Senior Biochemist', 0, $ln=0, 'L', 0, '', 0, false, 'B', 'B');
$pdf->setFooterData(array(0,64,0), array(0,64,128));
$pdf->Output('example_001.pdf', 'I');
推荐阅读
- c# - Outlook - 只有第一个“getVisible”调用 contextMenu
- node.js - “首先”钩子随机出现在我的测试中
- javascript - Phoenix,在模板 eex 中使用 socket.js 之外的套接字和 Presence
- ruby-on-rails - NoMethodError(nil:NilClass 的未定义方法 `charset='):使用 rails 发送电子邮件时
- python - 使用 Python 模块 Academic.py 的正确方法是什么?
- symfony - 在控制器类中加载服务
- python - 上传的文件但显示“[]”而不是上传的文件
- c++ - 从'unsigned __int64'到'unsigned __int64 *'的转换错误 - Pybind11
- wix - WiX 安装程序检测并卸载 Inno 安装程序
- sage-line-50 - 从 Sage Line 50 Cloud 中提取数据