Laravel 7 Export PDF Generate File Laporan PDF
Laravel 7 Export PDF Generate File Laporan PDF

Tutorial Export PDF Laravel – Hello laravel lover’s, in this tutorial I will guide you a simple and easy way how to make export reporting pdf file using framework Laravel and library MPDF. In this tutorial I use framework Laravel version 7.x to develop this tutorial. In this tutorial I will show you an example of how to create export pdf file using framework Laravel combines with library mPDF to generate PDF file. So, let’s scroll below.

Halo Laravel lover’s, pada tutorial kali ini saya ingin berbagi dengan Anda tentang cara membuat laporan dalm bentuk pdf pada Laravel. Disini saya menggunakan laravel project ver 7.x. Untuk membuat laporan dalam bentuk pdf pada laravel disini saya menggunakan library mPDF. Library mPDF adalah daftar pustaka PHP yang dapat digunakan untuk meng-generate file laporan dalam bentuk PDF, library mPDF sering digunakan untuk membuat laporan PDF pada bahasa pemograman PHP, juga seperti pada framework Codeigniter maupun Laravel. Sehingga pada tutorial kali ini saya akan berbagi dengan Anda bagaimana menggunakan library mPDF pada framework Laravel untuk membuat laporan dalam bentuk PDF pada framework laravel.

Disini saya menggunakan project Laravel yang sudah ada pada pembahasan tutorial sebelumnya pada judul “Tutorial Laravel 7: Membuat Export Laporan Dalam Format Excel Pada Laravel“, sehingga disini saya menganggap sudah bisa melakukan setup project Laravel dari tahap instalasi hingga melakukan operasi CRUD menggunakan framework Laravel, jadi disini saya akan mengajak Anda bagaimana menampilkan data dari sebuah tabel dari database dan mengeksport dalam bentuk laporan dalam format PDF.

Jika teman-teman belum bisa menggunakan framework Laravel dari tahap instalasi hingga menghasilkan aplikasi CRUD, maka teman-teman bisa membacanya pada tutorial yang sudah saya publish pada judul “Step By Step Tutorial Laravel Lengkap Cara Membuat Aplikasi CRUD Dengan Laravel 7“, pada tutorial tersebut teman-teman akan diajak bagaimana melakukan setup project Laravel dari tahap instalasi hingga membuat aplikasi CRUD data pegawai.

Install mPDF pada Laravel

Untuk bisa menggunakan library mPDF pada laravel tentu harus kita lakukan pertama adalah melakukan instalasi terlebih dahulu dengan menggunakan composer, silahkan buka jendela Terminal/ Command Prompt Anda dan jalankan perintah composer berikut :

composer require mpdf/mpdf

Berikut adalah proses jalannya instalasi library mPDF.

Laravel Export mPDF Composer Install
Laravel Export mPDF Composer Install

Membuat Routing Dan Controller

Agar laporan export pdf bisa diakses oleh visitor, maka kita harus membuat sebuah routing baru pada file “routes/web.php” dan tambahkan script berikut :

Route::get(‘/pegawai/exportpdf’, ‘PegawaiController@exportPDF’)->name(‘exportPDF’);

Karena project laravel yang digunakan disini adalah merupakan rangkaian dari project sebelumnya, maka untuk kebutuhan controller pada tutorial export pdf dengan laravel disini saya menggunakan controller yang sudah ada pada folder “app\Http\Controllers\PegawaiController.php”.

Setelah proses instalasi library mPDF pada Laravel selesai maka tahap selanjutnya adalah memanggil class MPDF pada controller yang akan menggunakan library mPDF, silahkan buka file controller “app\Http\Controllers\PegawaiController.php” lalu panggil class MPDF dengan potongan code berikut :

use Mpdf\Mpdf;

Membuat Tombol Export PDF pada file blade Laravel

Langkah selanjutnya adalah menambahkan atau membuat tombol export pdf pada file blade pada folder “resources\views\pegawai.blade.php”, buka file tersebut lalu tambahkan html button export pdf seperti berikut :

<button class=”btn btn-primary btn-sm btn-flat pull-right exportPDF”><i class=”fa fa-file”></i> Export PDF</button>

Kemudian masih pada file blade yang sama tambahkan code script untuk menjalankan button export pdf seperti berikut :

//export mPDF
$(‘.exportPDF’).off(“click”).on(“click”,function() {                    
      window.location =”{{route(‘exportPDF’)}}”;                     
});

Setelah melakukan modifikasi pada file blade untuk menjalankan fungsi Export PDF pada Laravel dengan library MPDF, maka selanjutnya lakukan penambahan fungsi method exportPDF() pada file controller “app\Http\Controllers\PegawaiController.php”, buka file controller dan tambahkan code seperti berikut :

//export mPDF
    public function exportPDF()
    {       
        $query = DB::table(‘pegawais’)->get();
        $table =”;
        $no=1;
        foreach ($query as $row)
        {           
            $table .='<tr>
                                <td>’.$no++.'</td>
                                <td>’.$row->name.'</td>
                                <td>’.$row->email.'</td>
                                <td>’.$row->job.'</td>
                                <td>’.$row->address.'</td>                              
                            </tr>’;
        }
        $mpdf = new Mpdf([‘debug’=>FALSE,’mode’ => ‘utf-8’, ‘orientation’ => ‘L’]);
        $mpdf->WriteHTML(‘<table border=”1″ id=”datatable” class=”table table-striped table-bordered” style=”border-collapse: collapse;”>
                    <thead>
                    <tr>
                        <th>No</th>
                        <th>Nama</th>
                        <th>Email</th>
                        <th>Pekerjaan</th>
                        <th>Alamat</th>
                    </tr>
                    </thead>
                    <tbody>
                    ‘.$table.’                       
                    </tbody>
                </table>’);
        $mpdf->Output(‘Jogjatech_Laporan_data_pegawai.pdf’,’I’);
        exit;
    }

Sekarang semua kebutuhan untuk menjalankan fungsi export PDF dengan library mPDF pada Laravel 7 sudah terlengkapi, langkah akhir adalah melakukan uji apakah fungsi export pdf mPDF dengan laravel dapat berjalan sesuai yang kita inginkan. Buka kembali jendela Terminal/ Command Prompt lalu dengan perintah change directory (cd) arahkan pada root project laravel Anda, kemudian jalankan perintah artisan running server development seperti berikut :

php artisan serve

Setelah server development laravel berjalan, buka web browser Anda lalu jalankan project laravel dengan mengakses url localhost:8000/pegawai, jika berjalan dengan baik maka akan kita jumpai satu buah tambahan tombol export pdf seperti berikut :

Laravel 7 Tombol Export PDF Dengan Laravel
Laravel 7 Tombol Button Export PDF Dengan Laravel

Jika tombol Export PDF Dengan Laravel tersebut kita klik maka akan meng-generate file laporan dalam bentuk PDF, jika kita mengakses melalui web browser Google Chrome maka akan ditampilkan halaman laporan PDF seperti berikut :

Laravel 7 Export Laporan PDF Dengan Laravel Library mPDF
Laravel 7 Export Laporan PDF Dengan Laravel Library mPDF

Sedangkan jika kita akses melalui web browser Mozilla Firefox maka akan di generate file laporan PDF seperti berikut :

Laravel 7 Export PDF Generate File Laporan PDF
Laravel 7 Export PDF Generate File Laporan PDF

Dan berikut saya lampirkan file-file kebutuhan export pdf dengan laravel :

file controller “app\Http\Controllers\PegawaiController.php”

<?php
namespace App\Http\Controllers;
//Jogjatech.com
use Illuminate\Http\Request;
use DB;
use App\Pegawai;
use Datatables; //pemanggilan datatable dalam sebuah controller
use PHPExcel; // library PHPexcel
use PHPExcel_IOFactory; // library PHPexcel
use Mpdf\Mpdf;
class PegawaiController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        return view(‘pegawai’);
    }
    public function getData()
    {
        return Datatables::of(Pegawai::all())->make(true);
    }
    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        $data=array(
                ‘name’  => $request->input(‘name’),
                ’email’ => $request->post(’email’),
                ‘job’   => $request->post(‘job’),
                ‘address’=> $request->post(‘address’)
            );
        if($request->input(‘idpegawai’)==”){
            DB::table(‘pegawais’)->insert($data);
        }else{
            DB::table(‘pegawais’)->where(‘id’,’=’,$request->post(‘idpegawai’))->update($data);
        }        
        return redirect()->route(‘pegawai.index’);
    }
    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit(Request $request)
    {
        $data = Pegawai::findOrFail($request->get(‘id’));
        echo json_encode($data);
    }
    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        DB::table(‘pegawais’)->where(‘id’, ‘=’, $id)->delete();
    }
    
    public function export()
    {       
        include ‘PHPExcel/PHPExcel.php’;                
        $object = new PHPExcel();
        $object->setActiveSheetIndex(0);        
        $kolom= [‘ID’,’Nama’,’Email’,’Pekerjaan’,’Alamat’];     
        $column = 0;
        foreach($kolom as $field)
        {           
            $object->getActiveSheet()->setCellValueByColumnAndRow($column, 1, $field);
            $column++;
        }         
        $cek = Pegawai::all()->toArray();
        $excel_row = 2;
        foreach ($cek as $row){
            $hasil= array_values($row);                  
            $kolom = sizeof($hasil);
            for($i=0;$i<$kolom;$i++){               
                $object->getActiveSheet()->setCellValueByColumnAndRow($i, $excel_row, $hasil[$i]);  
            }   
            $excel_row++;           
        }
                     
        $writer = PHPExcel_IOFactory::createWriter($object, ‘Excel2007’);
        header(‘Content-Type: application/vnd.ms-excel’);
        header(‘Content-Disposition: attachment;filename=”DataPegawaiPHPExcel_Jogjatech.xlsx”‘);
        $writer->save(‘php://output’);
    }
    
    //export mPDF
    public function exportPDF()
    {       
        $query = DB::table(‘pegawais’)->get();
        $table =”;
        $no=1;
        foreach ($query as $row)
        {           
            $table .='<tr>
                                <td>’.$no++.'</td>
                                <td>’.$row->name.'</td>
                                <td>’.$row->email.'</td>
                                <td>’.$row->job.'</td>
                                <td>’.$row->address.'</td>                              
                            </tr>’;
        }
        $mpdf = new Mpdf([‘debug’=>FALSE,’mode’ => ‘utf-8’, ‘orientation’ => ‘L’]);
        $mpdf->WriteHTML(‘<table border=”1″ id=”datatable” class=”table table-striped table-bordered” style=”border-collapse: collapse;”>
                    <thead>
                    <tr>
                        <th>No</th>
                        <th>Nama</th>
                        <th>Email</th>
                        <th>Pekerjaan</th>
                        <th>Alamat</th>
                    </tr>
                    </thead>
                    <tbody>
                    ‘.$table.’                       
                    </tbody>
                </table>’);
        $mpdf->Output(‘Jogjatech_Laporan_data_pegawai.pdf’,’I’);
        exit;
    }
}

file blade “resources\views\pegawai.blade.php”

@extends(‘layouts.app’)
@section(‘content’)
<div class=”container”>
    <div class=”row justify-content-center”>
        <div class=”col-md-12″>
            <div class=”card”>
                <div class=”card-header”>Data Pegawai
                    <button class=”btn btn-success btn-sm btn-flat pull-right” data-toggle=”modal” data-target=”#modal-add”><i class=”fa fa-plus”></i> Tambah</button>
                    <button class=”btn btn-info btn-sm btn-flat pull-right export”><i class=”fa fa-file”></i> Export Excel</button>
                    <button class=”btn btn-primary btn-sm btn-flat pull-right exportPDF”><i class=”fa fa-file”></i> Export PDF</button>
                </div>
                @if($message = Session::get(‘status’))
                <div class=”alert alert-success alert-dismissable”>
                    <button aria-hidden=”true” data-dismiss=”alert” class=”close” type=”button”>×</button>
                    <p>{{$message}}</p>
                </div>
                @endif
                <div class=”card-body”>                    
                    <table id=”tbl_list” class=”table table-striped table-bordered” cellspacing=”0″ width=”100%”>
                    <thead>
                        <tr>
                            <th>ID</th>
                            <th>Name</th>
                            <th>Email</th>
                            <th>Job</th>
                            <th>Address</th>
                            <th>Action</th>
                        </tr>
                    </thead>
                    <tbody>  
                        
                    </tbody>
                </table>
                </div>
            </div>
        </div>
    </div>
</div>
<!– Modal –>
<div class=”modal fade” id=”modal-add” tabindex=”-1″ role=”dialog” aria-labelledby=”exampleModalLabel” aria-hidden=”true”>
  <div class=”modal-dialog” role=”document”>
    <div class=”modal-content”>
      <div class=”modal-header”>
        <h5 class=”modal-title” id=”exampleModalLabel”>Form Data Pegawai</h5>
        <button type=”button” class=”close” data-dismiss=”modal” aria-label=”Close”>
          <span aria-hidden=”true”>&times;</span>
        </button>
      </div>
      <form name=”frm_add” id=”frm_add” class=”form-horizontal” action=”{{route(‘pegawai.simpan’)}}” method=”POST” enctype=”multipart/form-data”> 
        @csrf
      <div class=”modal-body”>             
        <div class=”form-group”><label class=”col-lg-3 control-label”>Name</label>
            <div class=”col-lg-12″>
                <input type=”text” name=”name” placeholder=”Name” class=”form-control”>
            </div>
        </div>  
        <div class=”form-group”><label class=”col-lg-3 control-label”>Email</label>
            <div class=”col-lg-12″>
                <input type=”email” name=”email” placeholder=”Email” class=”form-control”>
            </div>
        </div> 
        <div class=”form-group”><label class=”col-lg-3 control-label”>Job</label>
            <div class=”col-lg-12″>
                <input type=”text” name=”job” placeholder=”Job” class=”form-control”>
            </div>
        </div> 
        <div class=”form-group”><label class=”col-lg-3 control-label”>Address</label>
            <div class=”col-lg-12″>
               <textarea name=”address” class=”form-control”></textarea>
            </div>
        </div>        
      </div>      
      <div class=”modal-footer”>      
        <input type=”hidden” name=”idpegawai”>  
        <button type=”button” class=”btn btn-secondary” data-dismiss=”modal”>Close</button>
        <button type=”submit” class=”btn btn-primary”>Simpan</button>
      </div>
      </form>
    </div>
  </div>
</div>
@endsection
@push(‘scripts’)
<script type=”text/javascript”>
$(document).ready(function () {
    $.ajaxSetup({headers: { ‘X-CSRF-TOKEN’: $(‘meta[name=”csrf-token”]’).attr(‘content’) }});
   $(‘#tbl_list’).DataTable({
       “aLengthMenu”: [
                [10, 25, 50, 100, 200, -1],
                [10, 25, 50, 100, 200, “All”]
            ],
        paging: true,
        processing: true,
        serverSide: true,
        ajax: ‘{{ url(‘pegawai/getdata’) }}’,
        type: “POST”,
        columns: [
            { data: ‘id’},
            { data: ‘name’},
            { data: ’email’},
            { data: ‘job’},
            { data: ‘address’},        
            { data: “id”,
                    render: function (data, type, row ) {
                        return ‘<button type=”button” class=”btn btn-xs btn-success edit” data-id=”‘+data+'”><small>Edit</small></button>’+
                                ‘<button type=”button” class=”btn btn-xs btn-danger hapus” id-hapus=”‘+data+'”><small>Hapus</small></button>’;
                    }, sClass: “text-center”, searchable: false
            }            
        ],  
              
        “drawCallback”: function(settings, json) {  
            $(‘.edit’).off(“click”).on(“click”,function() {              
               var cek = $(this).attr(‘data-id’);
               $.ajax({                     
                    url : “{{route(‘pegawai.edit’)}}?id=”+cek,
                    type: “GET”,
                    dataType: “JSON”,
                    success: function(data)
                    {                   
                        $(“#frm_add”).find(“input[name=idpegawai]”).val(data.id);
                        $(“#frm_add”).find(“input[name=name]”).val(data.name);
                        $(“#frm_add”).find(“input[name=email]”).val(data.email);
                        $(“#frm_add”).find(“input[name=job]”).val(data.job);
                        $(“#frm_add”).find(“textarea[name=address]”).val(data.address);
                        $(“#exampleModalLabel”).text(“Form Edit Pegawai”);
                        $(‘#modal-add’).modal(‘show’);                          
                    }
                }); 
            }); 
            $(‘.hapus’).off(“click”).on(“click”,function() {              
               var cek = $(this).attr(‘id-hapus’);               
               $.ajax({                   
                    url : “{{url(‘pegawai/hapus’)}}/”+cek,
                    type: “POST”,
                    success: function(data)
                    {   
                        window.location =”{{route(‘pegawai.index’)}}”;                          
                    }
                }); 
            });            
            //export PHPExcel
            $(‘.export’).off(“click”).on(“click”,function() {                   
                window.location =”{{route(‘exportExcel’)}}”;                       
            }); 
            //export mPDF
            $(‘.exportPDF’).off(“click”).on(“click”,function() {                    
                window.location =”{{route(‘exportPDF’)}}”;                     
            }); 
        },
    });
    
 });
</script>
@endpush

file “routes/web.php”

<?php
use Illuminate\Support\Facades\Route;
/*
|————————————————————————–
| Web Routes
|————————————————————————–
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the “web” middleware group. Now create something great!
|
*/
Route::get(‘/’, function () {
    return view(‘welcome’);
});
Auth::routes();
Route::get(‘/home’, ‘HomeController@index’)->name(‘home’);
Route::get(‘/pegawai’, ‘PegawaiController@index’)->name(‘pegawai.index’);
Route::get(‘/pegawai/getdata’, ‘PegawaiController@getData’)->name(‘pegawai.getdata’);
Route::post(‘/pegawai/simpan’, ‘PegawaiController@store’)->name(‘pegawai.simpan’);
Route::get(‘/pegawai/edit’, ‘PegawaiController@edit’)->name(‘pegawai.edit’);
Route::post(‘/pegawai/hapus/{id}’, ‘PegawaiController@destroy’)->name(‘pegawai.hapus’);
Route::get(‘/pegawai/export’, ‘PegawaiController@export’)->name(‘exportExcel’);
Route::get(‘/pegawai/exportpdf’, ‘PegawaiController@exportPDF’)->name(‘exportPDF’);

Bagaimana, cukup mudah kan dalam membuat laporan export pdf dengan laravel menggunakan library mPDF, akhir kata semoga Tutorial Export PDF Dengan Laravel menggunakan library daftar pustaka mPDF ini dapat memberi manfaat dan membantu bagi siapa saja yang membutuhkan, dan terimakasih telah mengunjungi Jogjatech.com, and happy coding 🙂

LEAVE A REPLY

Please enter your comment!
Please enter your name here