สำนักวิทยบริการและเทคโนโลยีสารสนเทศ (สวส.)

Office of Academic Resources and Information Technology

เขียน PHP ออกรายงานเป็น pdf

อธิบายตามความเข้าใจ
ขอยกตัวอย่างจาก code บางส่วน
 
<? 
//require('fpdf.php');
require('thaipdfclass.php');
include("../include/class.mysqldb.php");
include("../include/config.inc.php");

function utf8_to_tis620($string) {
  $str = $string;
  $res = "";
  for ($i = 0; $i < strlen($str); $i++) {
    if (ord($str[$i]) == 224) {
      $unicode = ord($str[$i+2]) & 0x3F;
      $unicode |= (ord($str[$i+1]) & 0x3F) << 6;
      $unicode |= (ord($str[$i]) & 0x0F) << 12;
      $res .= chr($unicode-0x0E00+0xA0);
      $i += 2;
    } else {
      $res .= $str[$i];
    }
  } 
  return $res;
}
function thaidate($str) {
    if($str == "0000-00-00") { return "ไม่กำหนด"; }
    $y = substr($str, 0, 4) + 543;
    $m = substr($str, 5, 2) + 0;
    $d = substr($str, 8, 2);                      
    $month = array("ม.ค.", "ก.พ.", "มี.ค", "เม.ย.", "พ.ค.", "มิ.ย.", "ก.ค.", "ส.ค.", "ก.ย.", "ต.ค.", "พ.ย.", "ธ.ค.");
    return $d . " " . $month[$m-1] . " " . $y;
}

//---------------------------------------------------------------------- หน้าสร้างตารางแสดงชื่อผู้ใช้งาน -----------------------------------
$footer =  '';
$header = 'ตารางแสดงรายชื่อกลุ่ม';
$pdf=new ThaiPDF();
$pdf->SetThaiFont();
$pdf->SetHeader( '', 1, 'R', 1);  // กำหนดหัวกระดาษ ชิดขวา
$pdf->SetFooter($footer, 0, 'L', 1);  // กำหนดท้ายกระดาษ ชิดซ้าย
$pdf->AddPage(); // สร้างหน้าใหม่
$pdf->SetFont('FreesiaUPC','B',16);  // กำหนดรูปแบบตัวอักษร,ตัวหนา,ขนาด
$pdf->SetTextColor(0,0,0); // กำหนดสีตัวอักษร

foreach($_REQUEST as $key => $value) { $$key = $value; }
$end = $numadd;
$sql = "select * from groups where gname = '$group'";  //ดึงข้อมูลจากฐานข้อมูล ตารางชื่อ groups
</style>
$result = mysql_query($sql);
$data = mysql_fetch_object($result);
$gdesc = utf8_to_tis620($data->gdesc);
for($i = 0; $i < $numadd; $i++) {// page 1 File Table  กำหนดลูปในการแสดงข้อมูล ใน 1 หน้ากระดาษ
    if($i % 25 == 0) {  // สร้างบรรทัด 1 หน้ากระดาษโดยประมาณ 25 บรรทัด
        if($i != 0) {    // เริ่มแสดงข้อมูล
            $pdf->Ln(4); // ขนาดความกว้างของบรรทัดเท่ากับ 4
            $pdf->Cell(18,7,'หมายเหตุ :',0,0,'L'); // แสดงข้อความ"หมายเหตุ"  ,ตำแหน่งชิดซ้าย ตำแหน่ง cell ที่ 18,7  (อยู่ท้ายตาราง)
            $pdf->Cell(0,7,'ชื่อผู้ใช้และรหัสผ่านข้างต้นสามารถใช้งานได้ถึงวันเวลาที่กำหนด',0,0,'J'); // แสดงข้อความ"ชื่อผู้ใช้และรหัส                                     ผ่านข้างต้นสามารถใช้งานได้ถึงวันเวลาที่กำหนด"  ,ตำแหน่ง cell ที่ 0,7 และเว้นระยะ (อยู่ท้ายตาราง)
            if($select1=='WISPr-Session-Terminate-Time'){ // เงื่อนไขแบบ WISPr-Session-Terminate-Time
                $pdf->Cell(0,7,'บัตรหมดอายุ: ' . thaidate($gexpire) ,0,0,'R'); }// แสดงข้อความ"บัตรหมดอายุ" และ ค่าที่วันที่หมดอายุ                                                                                            จากฐานข้อมูล ,ตำแหน่ง cell ที่ 18,7 และชิดขวา(อยู่ท้ายตาราง)
            if($select1=='Usage-Limit'){ // เงื่อนไข แบบ Usage-Limit
                $gexpire1=$gexpire /60/60;   // คำนวณค่าที่จะแสดงให้เป็นชั่วโมง
                $pdf->Cell(0,7,'บัตรหมดอายุ : '  .$gexpire1. ' ชั่วโมง',0,0,'R');}  // แสดงข้อความ"บัตรหมดอายุ" และ ค่าชั่วโมงที่หมด                                                                                       อายุจากฐานข้อมูล ,ตำแหน่ง cell ที่ 18,7 และชิดขวา(อยู่ท้ายตาราง)
            $pdf->Ln(20);// ขนาดความกว้างของบรรทัดเท่ากับ 20
            $pdf->SetFont('FreesiaUPC','',14); // กำหนดรูปแบบตัวอักษร,ตัวหนา,ขนาด
            $pdf->Cell(0,0,'วิทยาเขต  .....................',0,0,'L');  //แสดงข้อความ "วิทยาเขต ......................" ตำแหน่งชิดซ้าย
            $pdf->Cell(0,0,'ลงชื่อ........................',0,0,'R'); //แสดงข้อความ "ลงชื่อ ........................." ตำแหน่งชิดขวา
            $pdf->Ln(12);// ขนาดความกว้างของบรรทัดเท่ากับ 12
            $pdf->Cell(0,0,'(..................................)',0,1,'R');   //แสดงข้อความ ".........................." ตำแหน่งชิดขวา
            $pdf->Ln(12);// ขนาดความกว้างของบรรทัดเท่ากับ 12
            $pdf->Cell(0,0,'........../............../.............',0,1,'R');  //แสดงข้อความ " ......../.........../..........." ตำแหน่งชิดขวา
            $pdf->Ln(1);// ขนาดความกว้างของบบรทัดเท่ากับ 1
            $pdf->Cell(0,9,'ผู้ขออนุมัติ',0,0,'R');   //แสดงข้อความ "ผู้ขออนุมัติ" ตำแหน่งชิดขวา
            $pdf->Ln(12);// ขนาดความกว้างของบรรทัดเท่ากับ 12
            $pdf->Cell(0,0,'ฝ่ายวิศวกรรมเครือข่าย : สำนักวิทยบริการและเทคโนโลยีสารสนเทศ',0,0,'L');
            $pdf->AddPage();  // สร้างหน้าใหม่
         }
        $pdf->SetFont('FreesiaUPC','B',18); // กำหนดรูปแบบตัวอักษร,ตัวหนา,ขนาด
        $pdf->Cell(0,0,'Rajamangala University of Technology Srivijaya '   ,0,1,'L');
        $pdf->SetFont('FreesiaUPC','B',14); // กำหนดรูปแบบตัวอักษร,ตัวหนา,ขนาด
        $pdf->Cell(0,0,'[ Srivijaya WiFi ]' ,0,1,'R');
        $pdf->Ln(7); // ขนาดความกว้างของบรรทัดเท่ากับ 7
        $pdf->SetFont('FreesiaUPC','B',12); // กำหนดรูปแบบตัวอักษร,ตัวหนา,ขนาด
        $pdf->Cell(0,0,'ตารางแสดงรายชื่อกลุ่ม' . $gdesc . ' ( จำนวนทั้งสิ้น ' . $end . ' คน )'   ,0,1,'L');
        $pdf->Cell(0,0,date('Y-m-d_H-i',time())  ,0,1,'R');
        $pdf->Ln(3);// ขนาดความกว้างของบรรทัดเท่ากับ 3
        $pdf->SetFont('FreesiaUPC','B',14); // กำหนดรูปแบบตัวอักษร,ตัวหนา,ขนาด
        $pdf->Cell(10,7,'ที่',1,0,'C');
        $pdf->Cell(30,7,'ชื่อเข้าระบบ',1,0,'C');
        $pdf->Cell(50,7,'ชื่อ - นามสกุล',1,0,'C');
        $pdf->Cell(40,7,'หมายเลขบัตร ',1,0,'C');
        $pdf->Cell(0,7,'หน่วยงาน / ที่อยู่',1,0,'C');
        $pdf->Ln(7);// ขนาดความกว้างของบรรทัดเท่ากับ 7    
    }   // row of data Table
    $pdf->SetFont('FreesiaUPC','',12); // กำหนดรูปแบบตัวอักษร,ตัวหนา,ขนาด
    $pdf->Cell(10,7,$i+1 . '.',1,0,'C');
    $pdf->Cell(30,7,$username[$i]  ,1,0,'C');
    $pdf->Cell(50,7,'',1,0,'L');
    $pdf->Cell(40,7,'',1,0,'L');
    $pdf->Cell(0,7,'',1,0,'L');
    $pdf->Ln(7); // ขนาดความกว้างของบรรทัดเท่ากับ 7   
}
$pdf->Ln(4);// ขนาดความกว้างของบรรทัดเท่ากับ 4
$pdf->Cell(18,7,'หมายเหตุ :',0,0,'L');
$pdf->Cell(0,7,'ชื่อผู้ใช้และรหัสผ่านข้างต้นสามารถใช้งานได้ถึงวันเวลาที่กำหนด',0,0,'J');
if($select1=='WISPr-Session-Terminate-Time'){$pdf->Cell(0,7,'บัตรหมดอายุ: ' . thaidate($gexpire) ,0,0,'R');}
if($select1=='Usage-Limit'){
    $gexpire1=$gexpire /60/60;
    $pdf->Cell(0,7,'บัตรหมดอายุ : '  .$gexpire1. ' ชั่วโมง',0,0,'R');}
$pdf->Ln(20);// ขนาดความกว้างของบรรทัดเท่ากับ 20
$pdf->SetFont('FreesiaUPC','',14);// กำหนดรูปแบบตัวอักษร,ตัวหนา,ขนาด
$pdf->Cell(0,0,'วิทยาเขต  ....................................................................',0,0,'L'); 
$pdf->Cell(0,0,'ลงชื่อ.......................................................................',0,0,'R');
$pdf->Ln(12);// ขนาดความกว้างของบรรทัดเท่ากับ 12
$pdf->Cell(0,0,'(..................................................................)',0,1,'R');
$pdf->Ln(12);// ขนาดความกว้างของบรรทัดเท่ากับ 12
$pdf->Cell(0,0,'................./........................../.......................',0,1,'R');
$pdf->Ln(1);// ขนาดความกว้างของบรรทัดเท่ากับ 1
$pdf->Cell(0,9,'ผู้ขออนุมัติ',0,0,'R');
$pdf->Ln(12);// ขนาดความกว้างของบรรทัดเท่ากับ 20    
$pdf->Cell(0,0,'ฝ่ายวิศวกรรมเครือข่าย : สำนักวิทยบริการและเทคโนโลยีสารสนเทศ',0,0,'L');    
 

ผลการออกรายงานเป็น pdf