Membuat Laporan dalam bentuk PDF di PHP terutama yang menggunakan framework Code Igniter 4 (CI4), sebenarnya sangat mudah, ada banyak library yang dapat digunakan untuk mempermudah pembuatan laporan pdf tersebut yang sifatnya open source dan mudah digunakan, serta ada banyak sekali tutorial di youtube maupun artikel blog yang membahas akan hal tersebut.


Namun karena pemrograman web saya masih pemula dan bahkan hanya selingan saja, terkadang jarang sekali berinteraksi dengan CI4 hanya untuk kasus-kasus tertentu saja, jadi untuk kasus-kasus tertentu saya sering lupa lagi langkah-langkahnya jika dikemudian hari saya harus berinteraksi lagi dengan CI4.

 

So melalui artikel ini saya hanya ingin mendokumentasikan beberapa catatan penting bagaimana cara mengintegrasikan TCPDF pada CI4 versi saya.

 

Mengintegrasikan dan menggunakan TCPDF di CI4 untuk membuat laporan PDF

Berikut adalah langkah-langkah yang bisa kita coba untuk mengintegrasikan TCPDF di CI 4 agar dapat digunakan untuk membuat laporan dalam bentuk file PDF.


Oh ya saya disini kebetulan tidak menggunakan composer, jadi yang saya gunakan adalah cara manual saja. langkahnya adalah sebagai berikut:

 

1. download library TCPDF

    download saja disini:https://github.com/tecnickcom/tc-lib-pdf

 

2. Extract dan letakan dilokasi projek ci4 kamu di folder app\Config\Libraries\

 Ganti saja nama folder hasil extract misal menjadi tcpdf seperti gambar di bawah ini:



3. pada projek ci4 kamu, buka file App\Config\Autoload.php, kemudian modifikasi sedikit di bagian dalamnya menjadi:


4. Untuk mencetak laporan PDF, saya buat file ProdukModel.php di folder models ci4, seperti kode berikut:

<?php

namespace App\Models;

use CodeIgniter\Model;

class ProdukModel extends Model {

    protected $table = 'produk';
    protected $primaryKey = 'ProdukID';
    protected $allowedFields = [
        'ProdukID',
        'NamaProduk',
        'Harga',
        'Stok'];


Kemudian selanjutnya saya buat  file PDFReport.php di Controllers, dengan isi seperti kode di bawah ini:

<?php

namespace App\Controllers;

use App\Models\ProdukModel;
use TCPDF;

class PDFReport extends BaseController {

    protected $pModel;

    public function __construct()
        {     

            $this->pModel=new ProdukModel();
        }


    public function produk()
        {
            $data =  $this->pModel->findAll();

            $pdf = new TCPDF();
    $pdf->AddPage('P', 'mm', 'A4');
    $pdf->SetFont('', 'B', 12);
    $pdf->Cell(210, 10, "DAFTAR STOK BARANG", 0, 1, 'C');
    $pdf->SetAutoPageBreak(true, 0);
    // Add Header
    $pdf->Ln(10);
    $pdf->SetFont('', 'B', 12);
    $pdf->Cell(10, 8, "No", 1, 0, 'C');
    $pdf->Cell(130, 8, "Nama Barang", 1, 0, 'C');
    $pdf->Cell(35, 8, "Harga", 1, 0, 'R');
    $pdf->Cell(15, 8, "Stok", 1, 1, 'C');
    $pdf->SetFont('', '', 12);
    
    //Add Detail
    $no=0;
    foreach ($data as $row){
        $no++;
        $pdf->Cell(10,8,$no,1,0, 'C');
        $pdf->Cell(130,8,$row['NamaProduk'],1,0);
        $pdf->Cell(35,8,number_format($row['Harga'],2,',','.'),1,0,'R');
        $pdf->Cell(15,8,$row['Stok'],1,1,'C');
    }
    $pdf->SetFont('', 'B', 10);
    $pdf->Cell(210, 10, "Laporan Pdf Menggunakan Tcpdf, Instalasi Tcpdf dengan Download Library", 0, 1, 'L');
    $this->response->setContentType('application/pdf');
    $pdf->Output('Laporan-stok-barang.pdf');
        }
}
Jika bingung dengan perintah di atas, anda bisa baca dokumentasi lengkap TCPDF agar lebih paham.


Kemudian buat route:

//print
$routes->get('produk-pdf/','PDFReport::produk);

hasilnya kurang lebih seperti gambar di bawah ini:






Kadang untuk keperluan terentu kita menginginkan tampilan layar hp muncul di layar komputer atau laptop. jika kita baca referensi di internet atau youtube sepertinya ada banyak cara yang ditawarkan yang bisa kita coba, ada yang memakai software tambahan seperti screen mirorring, ada juga yang tidak.

 

Saya alhamdulilah berhasil menampilkan layar hp ke laptop saya tanpa kabel usb dan tanpa perlu meingstal software dari pihak ke 3 cukup dengan jaringan wireless dan software yang tersedia di hp android saya dan software yang sudah tersedia di window 11, layar hp pun bisa ditampilkan di perangkat laptop.

 

Caranya ternyata tidak serumit yang dibayangkan, Untuk kasus saya kebetulan saya menggunakan Window 11 dan hp android menggunan redmi note 11 pro 5G. anda pun bisa mencoba cara-cara saya ini semoga saja berhasil.

 

Langkah-Langkah menampilkan Layar hp android ke komputer laptop

Tidak perlu bertele-tele langkah-langkahnya adalah sebagai berikut:

 

Persiapan Alat dan Bahan:

 

1 Unit hp android  (Disini Saya menggunakan HP Android xiaomi redmi note 11 pro 5G)

 

2. Perangkat Laptop (disini saya menggunakan windows 11)

 

3. Jaringan Wifi Internet (Wireless)

 

Langkah-langkah:

1. Sambungkan HP android anda dan juga laptop windows 11 anda ke jaringan wifi yang sama. 


2. Pada Laptop anda, tekan tombol start dan cari Wireless Display, jika belum aktif, anda bisa mengikuti langkahnya disini

jika sudah aktif maka akan muncul tampilan seperti gambar di bawah ini:

Menampilkan layar hp ke komputer
Wireless display win 11

Nama komputer saya kebetulan Didin-PC


3. Selanjutnya di hp android anda, (untuk hp saya xiaomi redmi note 11 pro 5g) masuk ke menu setting > koneksi dan berbagi >Proyeksi, (di hp anda mungkin menunya sedikit berbeda cari saja). 

Kemudian  aktifkan Proyeksi, kemudian pilih Nama komputer anda pada opsi yang tersedia.

menampilkan layar hp ke laptop tanpa usb

 

4. Jika berhasil, maka tampilan layar hp anda akan muncul pada aplikasi wireless display seperti nampak pada gambar di bawah ini:

Menghubungkan layar hp ke komputer
Menghubungkan layar hp ke komputer


 Sekarang 2024, sepertinya Kepemilikan KTP untuk warga negara indonesia akan secara bertahap sudah mulai dialihkan menjadi KTP Digital atau Identitas Kependudukan Digital (IKD), Walaupun bukan dalam bentuk fisik, ktp digital ini fungsinya sama seperti ktp fisik pada umumnya, bedanya KTP digital cukup diperlihatkan saja pada perangkat hp kepada pihak yang memerlukan persyaratan KTP.

 

Untuk menampilkan KTP digital kita perlu menginstal aplikasi dari dinas kependudukan dan catatan sipil yang bernama aplikasi identitas kependudukan digital (IKD) yang bisa langsung di download melalui playstore untuk pengguna android atau app store untuk pengguna apple.

 

Sayangnya Gambar ktp digital yang ditampilkan pada aplikasi identitas kependudukan tersebut, hanya bisa ditampilkan saja tidak bisa kita download bahkan tidak bisa kita screenshoot, karena memang aplikasi tersebut sepertinya sudah dikunci agar tidak diizinkan untuk dilakukan screenshoot atau di download.

 

Screenshoot dan cetak Identitas Kependudukan Digital (IKD)

Sebenarnya tidaklah masalah, karena saat ini jika persyaratan KTP diminta, cukup ditunjukan saja gambar ktpnya melalui aplikasi tersebut, biasanya instansi sudah mengetahuinya dan persyaratan akan dianggap sah-sah saja.


Bagaimana cara screenshoot KTP digital untuk diprint?

Jika memang perlu untuk mencetak KTP digital, sebenarnya bisa saja, salah satu caranya dengan cara difoto oleh perangkat yang berbeda, tentunya perlu presisi dan pencahayaan yang baik, maka hasilnya pun bisa kita cetak.

Namun jika anda ingin mendapatkan gambar ktp yang sempurna, maka anda bisa melakukan screenshoot gambar ktp tersebut.


Bagaimana caranya?

Aplikasi tersebut memang tidak bisa untuk melakukan screenshoot, walaupun anda pindahkan tampilan layarnya ke komputer, atau anda rekam tampilan layarnya tetap saja tidak bisa, biasanya akan nampak gelap saja.

Tapi bukan berarti tidak bisa diakali, sebenarnya ada banyak cara agar aplikasi ktp digital bisa melakukan screenshoot, cuma harus bisa dimodifikasi izin / hak akses yang terdapat di dalam aplikasi tersebut, tentu saja bukan cara yang mudah perlu sedikit paham IT.

Jika anda ingin tahu caranya, anda bisa baca artikel tentang Trik agar ktp digital bisa discreenshoot gambarnya untuk dicetak  

Atau jika anda tidak mau repot, cara mudahnya anda bisa langsung download aplikasi ktp digital hasil modifikasi lalu instalkan pada perangkat hp android anda.

 

Silahkan klik disini untuk mendapatkan aplikasi identitas kependudukan digital modifikasi agar bisa screenshoot.


Silahkan pasang di hp android anda, jika di hp android anda sudah terpasang aplikasi identitas kependudukan lama, silahkan uninstal dulu dan pasang versi modifikasinya.


Setelah terpasang, silahkan login ulang, dan coba lakukan screenshoot pada gambar ktp digital anda, jika berhasil maka ktp digital akan bisa discreenshoot dan jika diperlukan bisa digunakan untuk dicetak pada kertas.

 Sebagian Kartu tanda kependudukan (KTP) warga negara indonesia Sekarang sudah mulai dialihkan ke KTP digital, yang sebelumnya menggunakan ktp dalam bentuk kartu, seiring dengan perkembangan teknologi informasi terutama perangkat smartphone yang sudah menjadi perangkat wajib yang selalu dibawa ke mana-mana oleh penggunanya,  kartu kependudukan untuk warga negara indonesia pun,  sekarang sepertinya  secara bertahap sudah mulai dialihkan menjadi KTP digital.

 

Saya pun tahun ini alhamdulilah sudah memiliki ktp digital, cukup praktis memang, karena ktp digital ini tak perlu kita cetak, jika dibutuhkan untuk syarat pelayanan publik, cukup dengan membuka aplikasi kependudukan yang sudah kita instal di hp kita lalu tunjukan foto ktp digital yang terdapat dalam aplikasi tersebut, maka persyaratan akan diterima.


Tapi sayangnya ktp digital pada aplikasi identitas kependudukan yang sudah kita pasng di hp kita tidak bisa kita screenshoot, karena memiliki proteksi yang cukup kuat, gambar ktp digital pada aplikasi tersebut tidak akan bisa discreen shoot dengan cara apapun, sehingga tidak bisa kita cetak atau kita ambil gambarnya.

 

Tapi tenang saja, walaupun proteksi yang dimiliki oleh ktp digital cukup baik, bukan berarti tidak bisa, tetap bisa namun dengan menggunakan cara-cara tertentu.

 

Untuk membuat aplikasi ktp digital bisa discreenshoot, memang banyak sekali cara-cara yang sudah diulas di beberapa artikel blog, sayangnya setelah saya coba saya masih belum menemukan satupun yang berhasil, sehingga saya terpaksa mencari referensi lain, akhirnya ketemulah caranya.

 

Langkah-langkah Agar KTP digital bisa screenshoot

Di artikel kali ini saya akan coba ulas langkah demi langkah agar ktp digital bisa discreen shoot, caranya agak sedikit panjang, tapi jangan khawatir jika anda  kebetulan orang yang paham IT, kemungkinan anda akan bisa mengikutinya.

 

Tapi jika anda orang awam IT dan tidak mau repot,  anda bisa langsung download aplikasi Identitas kependudukan hasil modifikasi di bagian paling bawah artikel ini, lalu instalkan di hp android anda.


Agar ktp digital bisa discreenshoot, salah satu caranya adalah memodifikasi hak akses yang dimiliki oleh aplikasi kependudukan, sehingga ktp digital bisa screen shoot.

 

 Alat yang dibutuhkan:

a. 1 Perangkat hp android

b. Kabel data USB

c. Komputer/Laptop


Langkah-langkahnya adalah sebagai berikut:

 

1. Download dan instal aplikasi Shizuku melalui playstore di perangkat android anda

 

2. Download apk XPosed Disable Flagscure di halaman release github melalui browser di hp android anda, kemudian instalkan pada hp android anda.

 


3. Download juga apk LSPatch Manager di halaman rilis github melalui browser di hp android anda, kemudian instalkan pada hp android anda.

 


4. Selanjutnya Pada komputer window anda, download SDK Flatform tool for window, kemudian ekstrack di komputer anda.

SDK Flatform tool ini merupakan salah satu cara yang sering saya gunakan untuk membantu agar aplikasi Shizuku di atas bisa running.


5. Aktivkan developer option pada hp android anda (Setiap merk hp memiliki cara yang berbeda, silahkan cari referensinya),

Lalu pada menu developer option, atau menu opsi pengembang, silahkan aktifkan USB Debuging 


6. Sambungkan HP android anda ke komputer melalui kabel USB, kemudian pada opsi pilihan yang muncul pilih menu Transfer berkas via USB


7. di komputer anda, masuk ke folder SDK Flatform tool hasil ektraks, yang dijelaskan  pada langkah sebelumnya. seperti gambar di bawah ini:

Lalu klik kanan kemudian pilih menu > Open In Terminal untuk membuka jendela command prompt,

pada command prompt ketikan perintah di bawah ini:

 

adb devices kemudian enter

 

lalu ketikan laki perintah : 

 

adb shell sh /storage/emulated/0/Android/data/moe.shizuku.privileged.api/start.sh lalu enter

 

Hasilnya terlihat seperti gambar di bawah ini:



8. Jika hasilnya seperti di atas, berarti berhasil.

 

9, Kemudian Pada perangkat android anda pastikan Aplikasi Shizuku dalam keadaan belum dibuka, lalu buka dan amati pastikan shizuku running seperti gambar di bawah ini:


Jika not running silahkan ulangi lagi dari langkah 4 di atas, jika sudah running selanjutnya tekan tombol start.

 

10. Setelah aplikasi Sizuku Aktif, Selanjutnya di hp android anda buka aplikasi LSPatch, untuk memodifikasi module yang menonaktifkan screenshoot, pada aplikasi LSPatch pilih menu modul di bagian atas, lalu centah pilihan yang anda,

 

Kemudian pilih menu kelola di bagian bawah, tekan tombol tambah kemudian pilih dan tentukan folder di hp anda untuk menyimpan hasil build aplikasi yang dimodifikasi.

 

Lalu setelah itu tekan lagi tombol tambah lalu pilih aplikasi identitas kependudukan digital di hp kamu yang sudah terinstal di hp kamu sebelumnya.



11. Ikuti langkahnya, maka LSPatch akan memodifikasi aplikasi anda serta membuild ulang aplikasi kependudukan yang ada pada hp anda, aplikasi hasil build ulang akan tersimpan pada folder yang anda pilih di tahap ke 10 di atas.

 

12. Jika sudah selesai, Silahkan uninstal aplikasi kependudukan digital lama di hp anda sebelumnya, dan instal aplikasi kependudukan digital hasil build pada tahap 11 di atas, silahkan login ulang, dan coba lakukan screen shoot pada gambar ktp di aplikasi tersebut.

 

Jika berhasil, maka anda akan bisa melakukan screen shoot gambar ktp anda. 


Aplikasi kependudukan digital yang sudah bisa screenshoot

Jika anda bingung dengan cara di atas dan tidak mau repot, maka anda bisa langsung download aplikasi kependudukan hasil modifikasi di bawah ini.

 

Unduh Aplikasi KTP digital yang bisa screenshoot, kemudian instalkan di hp android anda


Selamat mencoba!

 Beberapa kali saya mendapatkan peringatan dari google admob, dan baru-baru ini sayapun mendapatkan kembali peringatan serupa yang menyebabkan iklan admob di aplikasi android saya dinonaktifkan atau dibatasi untuk sementara.

 

Kali ini peringatan admob untuk aplikasi saya adalah Modified ad code: Resizing Ad Frames, sebenarnya peringatan peringatan tersebut tidak asing bagi saya karena sebelumnya pun pernah mendapatkan peringatan serupa. 

 

Peringatan admob

Dulu saya bisa mengidentifikasi penyebabnya, yaitu karena tanpa sengaja saya memberikan padding kiri dan kanan pada container atau view tempat saya menampilkan iklan banner, sehingga mungkin  karena hal tersebut mesin iklan menganggapnya seolah ada modifikasi ruang pada iklan.

 

Tapi kali ini saya cukup dibuat bingung, karena penyebabnya sepertinya tidak seperti kasus sebelumnya, karena saya tidak memberikan padding pada kontainer pada tampilan iklan banner.

 

Seiring dengan terus mencari penyebabnya akhirnya saya mampu menemukan penyebabnya yaitu karena pada aplikasi saya, saya menempatkan satu unit iklan banner bada tampilan yang disembunyikan.

 

Aplikasi saya merupakan aplikasi permainan puzzle, pada tampilan layar bermain, saya membuat tampilan yang berisi iklan banner, tampilan tersebut saya atur agar tersembunyi dengan .setVisibility(View.GONE) dan tampilan akan muncul saat permainan berhasil diselesaikan. ternyata Tampilan tersebutlah yang menjadi penyebab hingga muncul peringatan Modified ad code: Resizing Ad Frames.


Penyebab Peringatan Modified ad code: Resizing Ad Frames Iklan Admob.

Mungkin kasusnya berbeda dengan kasus yang pernah teman-teman alami, tapi berdasarkan pengalaman apa yang saya alami, penyebab munculnya peringatan Modified ad code: Resizing Ad Frames yang menyebabkan iklan admob dibatasi adalah sebagai berikut:

 

1. Memberikan padding kiri dan kanan pada layout tampilan dimana iklan banner ditempatkan

Jadi pastikan jika anda memunculkan ikalan pada sebuah layout, pastikan layout tersebut tidak diberi padding.left dan padding.right, karena berdasarkan pengalaman pemberian padding akan menyebabkan munculnya peringatan Modified ad code: Resizing Ad Frames. walaupun di awal-awal aplikasi diluncurkan peringatan tidak akan muncul. tapi seiring waktu semakin bertambahnya pengguna maka peringatan tersebut akan muncul dan iklan akan dinonaktifkan sementara.


2. Iklan ditampilkan pada layout yang disembunyikan

Penyebab kedua adalah iklan ditampilkan pada layout yang disembunyikan. kasus saya, karena saya menampilkan iklan pada tampilan yang disembunyikan dengan kode setVisibility(View.GONE), dan layout tersebut akan muncul saat permainan berhasil diselesaikan.

Hal tersebut ternyata bisa menjadi masalah, di awal peluncuran memang peringatan tidak ada, namun seiring bertambahnya pengguna akhirnya munculah peringatan Modified ad code: Resizing Ad Frames yang menyebabkan iklan tidak ditayangkan sementara.


Mengatasi Masalah Modified ad code: Resizing Ad Frames di admob

Untuk mengatasi permasalahan tersebut adalah tentu saja saya memodifikasi cara menampilkan iklan, jika perlu iklan dihapus pada halaman yang bermasalah atau memperbaiki halaman tempat iklan banner ditampilkan.

Selanjutnya setelah selesai, kemudian saya luncurkan aplikasi di google play store, setelah aplikasi baru di berhasil direview dan tayang, maka selanjutnya mengajukan banding di google admob

Untuk kasus saya saya mengajukan banding dengan memberikan catatan sebagai berikut:

"Pada relase aplikasi terbaru, saya menghapus iklan banner pada halaman yang disembunyikan, yang sebelumnya halaman tersebut tampil saat game selesai dipecahkan."

atau kamupun bisa memberikikannya dalam bahasa inggris:

 "In the latest app release, I removed the banner ad on a hidden page, which previously appeared when the game was finished."

 

Setelah mengajukan banding, hanya dalam beberapa jam saja akhirnya banding diterima dan iklan akan kembali tampil lagi.


Moga pengalaman saya di atas membantu kamu yang kebetulan mendapatkan warning serupa.

Jika Kamu kebetulan mendapatkan warning serupa, mungkin saja penyebabnya sama seperti apa yang sebelumnya saya alamai atau mungkin saja berbeda, silahkan identifikasi pada aplikasi yang kamu buat. semoga berhasil mengatasinya.