Проблема TCPDF: как выровнять текст и изображения? - PullRequest
0 голосов
/ 03 января 2019

Я хочу создать резюме в формате PDF через PHP. TCPDF выглядит как гибкая библиотека для этой цели.Допустим, это ожидаемый результат:

enter image description here

Я только начал изучать TCPDF, пока у меня есть название компании, название и должность, но онине на том же выравнивании.enter image description here

Вот мой код:

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

?>

Как это исправить?

1 Ответ

0 голосов
/ 07 января 2019

Во-первых, вы используете выравнивание по центру для своих ячеек, а не выравнивание по левому краю, поэтому ваши ячейки выравниваются по центру на ширину 25 и 20 мм соответственно.

Вместо этого измените параметр 6 с 'C' на 'L' для ваших Cell вызовов, и это изменит их на выравнивание по левому краю.Это должно привести к тому, что ваши ячейки выстроятся так, как вы ожидаете.

Далее, для изображения заголовка и выравнивания текста.Поскольку вы пытаетесь выровнять свои ячейки по границам изображения (или, возможно, чего-то внутри изображения), вы, вероятно, захотите удалить заполнение ячеек по умолчанию с помощью $pdf->setCellPadding(0);

Затем вы можете настроитьПоложение изображения или ячейки, как вы считаете нужным.Здесь я выровнял их по абсциссе 10 мм.

Screen capture of generated 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');
...