1. เริ่มต้นจากการเตรียมไลบราลี่ PDF ที่ต้องใช้ทั้งหมด 2 ตัวด้วยกัน
1) TCPDF
2) FPDI
(จะนำไปไว้ในไดเรกทอรี่ application/third_party ของ codeigniter)
2. จากนั้นก็เตรียมโปรเจ็กต์ด้วย CodeIgniter ด้วยโปรแกรมที่ใช้เขียนโค๊ด (IDE) ที่ชื่อว่า eclipse ซึ่งในส่วนนี้ใครถนัดโปรแกรมไหน จะใช้อะไรเขียนโค๊ดก็ตามสะดวกเลยครับ
3. สร้างไฟล์ Pdf.php ในไดเรกทอรี่ libralies เพื่อเรียกใช้ไลบราลี่ TCPDF และ FPDI
libraries/Pfd.php
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
require_once APPPATH.'third_party/tcpdf/tcpdf.php';
require_once APPPATH.'third_party/fpdi/fpdi.php';
class Pdf extends FPDI
{
function __construct()
{
parent::__construct();
}
}
/* End of file Pdf.php */
/* Location: ./application/libraries/Pdf.php */
สำหรับลิงค์แนะนำการใช้งานมีดังนี้
https://github.com/bcit-ci/CodeIgniter/wiki/TCPDF-Integration
http://stackoverflow.com/questions/21016626/codeigniter-third-party-class-not-loading
4. สร้างไฟล์ Estimation.php ไว้ในไดเรกทอรี่ controllers เพื่อเรียกใช้งาน
controllers/Estimation.php
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Estimation extends CI_Controller {
/**
* Index Page for this controller.
*/
public function index()
{
$this->load->view('estimation/estimation_pdf');
}
}
5. สร้างไดเรกทอรี่ชื่อ estimation เพื่อใช้เก็บไฟล์ view ทั้งหมดของคอนโทรลเลอร์ controllers/Estimation.php โดยจะเก็บไฟล์ estimation_pdf.php ไว้ใน view ที่สร้างมานี้
สำหรับโค๊ดที่เรียกใช้ FPDI ดูตัวอย่างได้จากเว็บ http://www.setasign.com/products/fpdi/demos/tcpdf-demo/
views/estimation_pdf.php
<?php
$this->load->library('Pdf');
class MyPDF extends Pdf
{
/**
* "Remembers" the template id of the imported page
*/
var $_tplIdx;
/**
* Draw an imported PDF logo on every page
*/
function Header()
{
$file = dirname(__FILE__)."/PdfDocument.pdf";
if (is_null($this->_tplIdx)) {
$this->setSourceFile($file);
$this->_tplIdx = $this->importPage(1);
}
$specs = $this->getTemplateSize($this->_tplIdx);
$size = $this->useTemplate($this->_tplIdx, 10);
}
function Footer()
{
// emtpy method body
}
}
// initiate PDF
$pdf = new MyPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
$pdf->SetMargins(PDF_MARGIN_LEFT, 40, PDF_MARGIN_RIGHT);
$pdf->SetAutoPageBreak(true, 20);
$pdf->setFontSubsetting(false);
// add a page
$pdf->AddPage();
$pdf->SetFont('freeserif', '', 12);
$data = array();
$data[0] = array('name'=>'ด.ช.ใจดี มีสุข', 'score1' => 1, 'score2' => 1, 'score3' => 1);
$data[1] = array('name'=>'ด.ญ.อารียา พาใจ', 'score1' => 0, 'score2' => 1, 'score3' => 3);
$data[2] = array('name'=>'ด.ญ.มานี มีนา', 'score1' => 3, 'score2' => 1, 'score3' => 2);
$data[3] = array('name'=>'ด.ช.มานพ พบพาน', 'score1' => 1, 'score2' => 0, 'score3' => 3);
$data[4] = array('name'=>'ด.ช.หาญกล้า ชาญสมร', 'score1' => 2, 'score2' => 3, 'score3' => 1);
$data[5] = array('name'=>'ด.ช.ใจดี มีสุข', 'score1' => 1, 'score2' => 1, 'score3' => 1);
$data[6] = array('name'=>'ด.ญ.อารียา พาใจ', 'score1' => 2, 'score2' => 1, 'score3' => 3);
$data[7] = array('name'=>'ด.ญ.มานี มีนา', 'score1' => 0, 'score2' => 1, 'score3' => 2);
$data[8] = array('name'=>'ด.ช.มานพ พบพาน', 'score1' => 1, 'score2' => 0, 'score3' => 3);
$i=0;
$x=35;
$y=80;
$pdf->setCellPaddings(0, 2, 0, 0);
$pdf->setCellMargins(0, 0, 0, 0);
foreach ($data as $row){
$i++;
if($row['score1'] > 0 && $row['score2'] > 0 && $row['score3'] > 0){
$ok = '/';
$fail = '';
}else{
$ok = '';
$fail = '/';
}
$pdf->SetXY($x,$y);
$pdf->MultiCell(20, 9, $i, 0, 'C', 0, 0);
$pdf->MultiCell(55, 9, $row['name'], 0, 'L', 0, 0);
$pdf->MultiCell(10, 9, $row['score1'], 0, 'C', 0, 0);
$pdf->MultiCell(10, 9, $row['score2'], 0, 'C', 0, 0);
$pdf->MultiCell(10, 9, $row['score3'], 0, 'C', 0, 0);
$pdf->MultiCell(20, 9, $row['score1']+$row['score2']+$row['score3'], 0, 'C', 0, 0);
$pdf->MultiCell(15, 9, $ok, 0, 'C', 0, 0);
$pdf->MultiCell(15, 9, $fail, 0, 'C', 0, 0);
$y += 8.7;
}
//foot data
$pdf->setXY(98, 251);
$pdf->Cell(56, 8, 'อ.อารีย์ ใจดี', 0, 0, 'C');
$pdf->setXY(109, 259);
$date = date('d') . ' '. date('m') . ' ' . (date('Y')+543);
$pdf->Cell(56, 8, $date, 0, 0, 'L');
$pdf->Output();
?>
6. เตรียมไฟล์แบบฟอร์ม PDF ที่มีการเรียกใช้ไว้ใน view/estimation ซึ่งเป็นโฟลเดอร์เดียวกันกับไฟล์ view เรียกใช้ ซึ่งในตัวอย่างคือ view/estimation/PdfDocument.pdf
(ดาวน์โหลดได้ที่ : เว็บไซต์ครูเชียงราย : แบบสังเกตพฤติกรรมการเรียน)
7. ลองเข้าหน้าเว็บเพจโดยผ่านคอนโทรลเลอร์ที่สร้างไว้ ในที่นี้คือ http://localhost/example/sunzan-design.com/index.php/estimation ซึ่งคอนโทรลเลอร์ในข้อที่ 3 ก็จะโหลด view ที่ใช้สร้าง PDF ออกมาผลลัพธ์ดังรูปด้านล่างนี้
สรุปการทำงานของโค๊ดนี้ก็คือ
1. โหลดหน้าแบบฟอร์ม PDF เปล่าๆ เข้ามารอไว้ด้วย FPDI
2. เขียนข้อมูลต่างๆ ลงไปยังตำแหน่งต่างๆ บนหน้ากระดาษ
3. เมื่อสั่ง $pdf->Output() ก็จะได้หน้า PDF ที่มีข้อมูลทั้งสองส่วนนี้มารวมกัน
จบแล้วครับ พบกันใหม่ในบทความต่อไป ^_____^
"PHP ไม่ได้สร้างสุดยอดโปรแกรม แต่ PHP ช่วยให้งานคุณง่ายขึ้นต่างหาก"
PHP CI MANIA - PHP Code Generatorโปรแกรมช่วยสร้างโค้ด ลดเวลาการเขียนโปรแกรม
สนใจสั่งซื้อเพียง 3,990 บาท
PHP CI MANIA - PHP Code Generator
โปรแกรมช่วยสร้างโค้ด "ลดเวลาการเขียนโปรแกรม"
ความคิดเห็น
แสดงความคิดเห็น