การสั่งพิมพ์รายงานแบบ PDF
1. สร้างลิงค์เพื่อเรียกไปยังหน้า Controller ที่เตรียมไว้สำหรับแสดงข้อมูลเป็นไฟล์ PDFในที่นี้จะสร้างไปที่หน้าค้นหาและแสดงรายการ list_view.php
2. สร้างไฟล์ Pdf.php ไว้ที่ application/libraries/ ซึ่งจะเรียกไลบรารี่ที่เราดาวน์โหลดเก็บไว้ใน application/third_party มาใช้อีกทีหนึ่ง (ดาวน์โหลดไลบรารี่ที่เกี่ยวข้องได้ที่ https://github.com/sunzandesign/PHP_CI_MANIA_Libraries)
3. ในส่วนของ Controller ให้โหลดไลบรารี่ที่สร้างไว้มาใช้งาน
4. เพิ่มไฟล์ list_pdf.php ซึ่งเป็นส่วนของ Views คล้ายกับหน้าค้นหาและแสดงผล แต่จะตัดเอาเฉพาะส่วนที่เราต้องการพิมพ์เท่านั้น เช่น ข้อมูลใน TABLE เท่านั้น
5. เมื่อคลิกปุ่ม PDF ก็จะเปิดไปที่หน้า Controller ที่เตรียมไว้และแสดงข้อมูล
1. สร้างลิงค์เพื่อเรียกไปยังหน้า Controller ที่เตรียมไว้สำหรับแสดงข้อมูลเป็นไฟล์ PDFในที่นี้จะสร้างไปที่หน้าค้นหาและแสดงรายการ list_view.php
<div class="col-sm-12 col-md-12">
<div class="pull-right text-right">
<a href="{page_url}/print_pdf" target="_blank" class="btn btn-danger btn-lg" data-toggle="tooltip" title="พิมพ์ข้อมูล">
<i class="fas fa-file-excel"></i></span> PDF
</a>
<a href="{page_url}/export_excel" class="btn btn-success btn-lg" data-toggle="tooltip" title="ส่งออกข้อมูล">
<i class="fas fa-file-excel"></i></span> Excel
</a>
</div>
</div>
2. สร้างไฟล์ Pdf.php ไว้ที่ application/libraries/ ซึ่งจะเรียกไลบรารี่ที่เราดาวน์โหลดเก็บไว้ใน application/third_party มาใช้อีกทีหนึ่ง (ดาวน์โหลดไลบรารี่ที่เกี่ยวข้องได้ที่ https://github.com/sunzandesign/PHP_CI_MANIA_Libraries)
<?php
if (!defined('BASEPATH')) {
exit('No direct script access allowed');
}
require_once APPPATH."/third_party/tcpdf/tcpdf.php";
class Pdf extends TCPDF{
public function __construct(){
parent::__construct();
}
}
3. ในส่วนของ Controller ให้โหลดไลบรารี่ที่สร้างไว้มาใช้งาน
public function print_pdf()
{
// load excel library
$this->load->library('Pdf');
$results = $this->Student->read(0, 1000);
$data_lists = $this->setDataListFormat($results['list_data'], 0);
$pdf = new Pdf('P', PDF_UNIT, 'A4', true, 'UTF-8', false);
$font = 'thsarabun';
$pdf->font = $font;
$pdf->SetCreator("");
$pdf->SetAuthor("");
$pdf->SetTitle("รายงานทะเบียนนักเรียน");
$pdf->SetSubject("รายงานทะเบียนนักเรียน");
$pdf->setPrintHeader(false);
$pdf->setPrintFooter(false);
$pdf->SetMargins(10, 10, 10);
$pdf->SetHeaderMargin(0);
$pdf->SetTopMargin(15);
$pdf->SetFooterMargin(0);
$pdf->SetFont($font, '', 16);
// Add a page
$pdf->AddPage("P");
$data['data_list'] = $data_lists;
$html = $this->parser->parse_repeat('demo/student/list_pdf', $data, true);
$pdf->writeHTMLCell(0, 0, '', '', $html, 0, 1, 0, true, '', true);
$pdf->lastPage();
$pdf->Output('Student_list.pdf', 'I');
}
4. เพิ่มไฟล์ list_pdf.php ซึ่งเป็นส่วนของ Views คล้ายกับหน้าค้นหาและแสดงผล แต่จะตัดเอาเฉพาะส่วนที่เราต้องการพิมพ์เท่านั้น เช่น ข้อมูลใน TABLE เท่านั้น
<style>
body {
font-family: 'TH SarabunPSK';
font-size : 16pt;
margin : 0px;
}
table{
width : 100%;
border-collapse: collapse;
}
table { page-break-inside:auto; }
th {
background-color:lightgrey;
text-align : center;
}
</style>
<h3 class="card-title"><i class="fa fa-list-alt"></i> ตารางแสดงรายการ ข้อมูล<b>นักเรียน</b></h3>
<table border="0.1" cellpadding="2">
<thead class="info">
<tr bgcolor="#dddddd">
<th width="20px;">#</th>
<th>id</th>
<th>รหัสประจำตัว</th>
<th>คำนำหน้าชื่อ</th>
<th>ชื่อ</th>
<th>นามสกุล</th>
<th>เพศ</th>
</tr>
</thead>
<tbody>
<tr parser-repeat="[data_list]" id="row_{record_number}">
<td width="20px;">[{record_number}]</td>
<td>{id}</td>
<td>{student_code}</td>
<td>{preview_prefix_name}</td>
<td>{firstname}</td>
<td>{lastname}</td>
<td>{preview_sex}</td>
</tr>
</tbody>
</table>
5. เมื่อคลิกปุ่ม PDF ก็จะเปิดไปที่หน้า Controller ที่เตรียมไว้และแสดงข้อมูล
PHP CI MANIA - PHP Code Generator
โปรแกรมช่วยสร้างโค้ด "ลดเวลาการเขียนโปรแกรม"
ความคิดเห็น
แสดงความคิดเห็น