TCPDF

Doc: https://tcpdf.org/docs/srcdoc/tcpdf/class-TCPDF/

Note:

  • HTML裡面的圖片網址一定要是完整路徑,不能是localhost, 否則輸出會有”unable to get the size of the image” error
    crontab執行的時候,base_url()就是抓到localhost,所以要注意

Example:

	public function pdf_test($html){
		// create new PDF document
		$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);

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

		// remove default header/footer
		$pdf->setPrintHeader(false);
		$pdf->setPrintFooter(false);

		// set default monospaced font
		$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);

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

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

		// set image scale factor
		$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);

		// set some language-dependent strings (optional)
		if (@file_exists(dirname(__FILE__).'/lang/eng.php')) {
			require_once(dirname(__FILE__).'/lang/eng.php');
			$pdf->setLanguageArray($l);
		}

		// ---------------------------------------------------------

		// set default font subsetting mode
		$pdf->setFontSubsetting(true);

		// Set font
		// dejavusans is a UTF-8 Unicode font, if you only need to
		// print standard ASCII chars, you can use core fonts like
		// helvetica or times to reduce file size.
		$pdf->SetFont('cid0jp', '', 14, '', true);//中文字型

		// Add a page
		// This method has several options, check the source code documentation for more information.
		$pdf->AddPage();

		// set text shadow effect
		$pdf->setTextShadow(array('enabled'=>true, 'depth_w'=>0.2, 'depth_h'=>0.2, 'color'=>array(196,196,196), 'opacity'=>1, 'blend_mode'=>'Normal'));

		// Set some content to print
		//$html = $this->email_handler->get_template('template_order.html');

		$ds = DIRECTORY_SEPARATOR;
    	$logo = FCPATH . 'assets' . $ds . 'front' . $ds . 'img' . $ds . 'logo_email.png';
    	//$url = 'https://www.xxx.com/assets/front/img/logo.png';
    	$pdf->Image ($logo);
    	$pdf->ln(10);

    	$img_row = '<tr>
    <td colspan="3"><a href="http://www.xxx.com"><img src="http://www.xxx.com/assets/front/img/logo.png" width="146" height="47" border="0" /></a></td>
  </tr>';
    	$html = str_replace($img_row, '', $html);

		// Print text using writeHTMLCell()
		$pdf->writeHTMLCell(0, 0, '', '', $html, 0, 1, 0, true, '', true);

		// ---------------------------------------------------------

		// Close and output PDF document
		// This method has several options, check the source code documentation for more information.
		$pdf_file = FCPATH . 'uploads_temp' . DIRECTORY_SEPARATOR . 'pdf_test.pdf';
		$pdf->Output($pdf_file, 'F');

		return $pdf_file;
	}

 

Reference: