คำสั่งสำหรับเขียนข้อความลงไปในไฟล์ PDF นั้นมีอยู่ด้วยกัน 4 คำสั่ง ประกอบด้วย Write, WriteHTML, Cell, MultiCell

วันนี้เรามาดูกันที่คำสั่ง Write ก่อน คำสั่ง Write เป็นคำสั่งที่เหมาะสำหรับพิมพ์ตัวหนังสือเยอะๆเหมือนพิมพ์หนังสือหรือบทความ

ลองดูโค้ด

<?php

require_once('vendor/autoload.php');

// create new PDF document
$pdf = new TCPDF('P', PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);

define('PROMPT_REGULAR', TCPDF_FONTS::addTTFfont(dirname(__FILE__).'/fonts/Prompt-Regular.ttf', 'TrueTypeUnicode'));
define('PROMPT_BOLD', TCPDF_FONTS::addTTFfont(dirname(__FILE__).'/fonts/Prompt-Bold.ttf', 'TrueTypeUnicode'));

// set document information
$pdf->SetCreator(PDF_CREATOR);
$pdf->SetAuthor('Nicola Asuni');
$pdf->SetTitle('TCPDF Example 001');
$pdf->SetSubject('TCPDF Tutorial');
$pdf->SetKeywords('TCPDF, PDF, example, test, guide');

$pdf->setPrintHeader(false);

// set margins
$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT);
$pdf->SetFooterMargin(PDF_MARGIN_FOOTER);

// set auto page breaks
$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);

// Add a page
$pdf->AddPage();

$pdf->SetFont(PROMPT_REGULAR, '', 14);


// Print text
$pdf->Write(0, 'ใครที่มีความเชื่อในเรื่องของวัตถุมงคล กำไลข้อมือมงคล ที่ช่วยเสริมในเรื่องต่างๆ ไม่ว่าจะเป็นการงาน การเงิน ความรัก เมื่อบูชามาแล้ว แล้วเกิดข้อสงสัยว่า ใส่ที่ข้อมือด้านไหนถึงจะดี ข้างซ้าย หรือข้างขวา?');

// Print anchor
$pdf->Ln(20);
$pdf->Write(0, 'คลิกที่นี่ https://www.sanook.com/horoscope/224877/', 'https://www.sanook.com/horoscope/224877/');
$pdf->Write(0, 'เพื่อไปยังรายละเอียดข่าว');


// Close and output PDF document
// This method has several options, check the source code documentation for more information.
$pdf->Output('hello-tcpdf.pdf', 'I');
$pdf->Close();

ผลลัพธ์

// Print text
$pdf->Write(0, 'ใครที่มีความเชื่อในเรื่องของวัตถุมงคล กำไลข้อมือมงคล ที่ช่วยเสริมในเรื่องต่างๆ ไม่ว่าจะเป็นการงาน การเงิน ความรัก เมื่อบูชามาแล้ว แล้วเกิดข้อสงสัยว่า ใส่ที่ข้อมือด้านไหนถึงจะดี ข้างซ้าย หรือข้างขวา?');

กำหนดให้ระยะห่างระหว่างบรรทัดเป็น 0 มีความหมายว่าให้โปรแกรมคำณวนเอาเองว่าระยะห่างเท่าไรจึงสวย จากนั้นพิมพ์คำว่า “ใครที่มี”….

$pdf->Ln(20);

ขึ้นบรรทัดใหม่ความสูงที่ 20 มิล. ไม่ใส่ตัวเลขพารามิเตอร์เข้าไปก็ได้ ลองดูละกันว่าระยะขึ้นบรรทัดมันได้ตามที่เราต้องการไหม ถ้าคิดว่าไม่สวยก็ใส่ตัวเลขกำหนดเข้าไป

$pdf->Write(0, 'คลิกที่นี่ https://www.sanook.com/horoscope/224877/', 'https://www.sanook.com/horoscope/224877/');

คำสั่งบรรทัดนี้ผมเพิ่มพารามิเตอร์ตัวที่ 3 เข้าไปด้วย ถ้ามีพารามิเตอร์ตัวที่ 3 จะเป็นการสั่งให้พิมพ์ข้อความออกมาแล้วคลิกลิ้งก์ได้

$pdf->Write(0, 'คลิกที่นี่ https://www.sanook.com/horoscope/224877/', 'https://www.sanook.com/horoscope/224877/');
$pdf->Write(0, 'เพื่อไปยังรายละเอียดข่าว');

สังเกตุผลลัพธ์ของ 2 คำสั่งนี้นะครับ ตอนออกมาข้อความจะติดกัน คำสั่ง Write จะไม่มีพารามิเตอร์กำหนดให้เคอร์เซอร์ขึ้นบรรทัดใหม่อัตโนมัติ เหมือนคำสั่ง Cell ท่านต้องอ่านบทความผมกลับไปกลับมาระหว่าง 2 คำสั่งนี้ ท่านก็จะเข้าใจ

คำสั่ง Write นอกจากพารามิเตอร์ 3 ตัวนี้แล้ว ยังมีพารามิเตอร์อื่นอีกหลายตัวให้กำหนด ลองเข้าไปดูรายละเอียดนะครับ เผื่อท่านต้องใช้ แต่หลักๆแล้วที่ใช้บ่อยก็พารามิเตอร์ 3 ตัวนี้

	/**
	 * This method prints text from the current position.<br />
	 * @param float $h Line height
	 * @param string $txt String to print
	 * @param mixed $link URL or identifier returned by AddLink()
	 * @param boolean $fill Indicates if the cell background must be painted (true) or transparent (false).
	 * @param string $align Allows to center or align the text. Possible values are:<ul><li>L or empty string: left align (default value)</li><li>C: center</li><li>R: right align</li><li>J: justify</li></ul>
	 * @param boolean $ln if true set cursor at the bottom of the line, otherwise set cursor at the top of the line.
	 * @param int $stretch font stretch mode: <ul><li>0 = disabled</li><li>1 = horizontal scaling only if text is larger than cell width</li><li>2 = forced horizontal scaling to fit cell width</li><li>3 = character spacing only if text is larger than cell width</li><li>4 = forced character spacing to fit cell width</li></ul> General font stretching and scaling values will be preserved when possible.
	 * @param boolean $firstline if true prints only the first line and return the remaining string.
	 * @param boolean $firstblock if true the string is the starting of a line.
	 * @param float $maxh maximum height. It should be >= $h and less then remaining space to the bottom of the page, or 0 for disable this feature.
	 * @param float $wadj first line width will be reduced by this amount (used in HTML mode).
	 * @param array|null $margin margin array of the parent container
	 * @return mixed Return the number of cells or the remaining string if $firstline = true.
	 * @public
	 * @since 1.5
	 */
	public function Write($h, $txt, $link='', $fill=false, $align='', $ln=false, $stretch=0, $firstline=false, $firstblock=false, $maxh=0, $wadj=0, $margin=null)