首页 > 解决方案 > 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');

?>

如何解决这个问题?

标签: phptcpdf

解决方案


首先,您对单元格使用居中对齐而不是左对齐,因此您的单元格居中对齐,宽度分别为 25 毫米和 20 毫米。

相反,将参数 6 从'C'更改'L'为您的Cell调用,这会将它们更改为左对齐。这应该让你的细胞按照你期望的方式排列。

接下来,用于标题图像和文本对齐。由于您正在尝试将单元格与图像的边界(或者可能是图像内部的某些内容)对齐,因此您可能希望删除默认的单元格填充$pdf->setCellPadding(0);

然后,您可以根据需要调整图像或单元格的位置。在这里,我让它们以 10 毫米的横坐标对齐。

生成的 PDF 的屏幕截图

<?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');

推荐阅读