Anda di halaman 1dari 10

Home Android Programming Rest Api Cara cepat Umum 

Ayub
kukuh

Home / iText PDF / Cara membuat Dokumen PDF dengan library itexPDF 5 di Andorid
ARSIP BLOG

Cara membuat Dokumen PDF Arsip Blog

dengan library itexPDF 5 di Andorid


 September 14, 2019  iText PDF POPULAR POSTS

Cara membuat Dokumen PDF


Pada kali ini saya mau share sedikit bagaimana cara membuat dokumen PDF atau laporan
dengan library itexPDF 5 di
berextesion .pdf pada aplikasi android yang akan dibuat. Disini saya mengunakan IDE android
Andorid
studio 3.5. Langsung open android studio kalian, buat projek baru File => New => New Project
=> Creates a new empty activiy. di cofigure project pilih bahasa java Cara membagikan File PDF di
android
buat sebuah folder font didalam folder res, caranya pilih folder res klik kanan => new =>
android resource directory =>isi directory name = font => directory tipe = font. Tambahkan file
berikut : Membuat Tampilan
Speedometer dengan library
1.montserratregular.ttf (font type) (cari di internet) Speedview
2.windings.ttf (font type) (cari diinternet)
3.windings1.ttf (font type) (cari diinternet)

Selanjutnya didalam folder res => layout pada layout activity_main.xml kita tambahkan 1 CATEGORIES
component button
Bar Chart ButterKnife Zelezny
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schem Cara Cepat Crop Image IText PDF
as.android.com/apk/res/android"
DTO Generator MPAndroidChart
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" Screenshoot Share File
android:layout_width="match_parent"
Speedometer SpeedView
android:layout_height="match_parent"
tools:context=".MainActivity">
<Button
android:id="@+id/cetak"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Create Dokument"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent">
</androidx.constraintlayout.widget.ConstraintLayout >

Gradle Script
pada bagian Gradle level aplikasi (Module:app) tambahkan pada bagian depedencies library
itextpdf, Dexter dan Gson. Itextpdf untuk membuat dokumen dengan extention.pdf, dexter
untuk runtime permissions untuk android api level 23 (Marshmallow) ke atas dan Gson untuk
convert java objek ke JSON maupun sebaliknnya. Untuk gsonnya sifatnya opsional

dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'androidx.appcompat:appcompat:1.0.2'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test:runner:1.1.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'
//itextfpdf
implementation 'com.itextpdf:itextg:5.5.10'
// Dexter runtime permissions
implementation "com.karumi:dexter:5.0.0"
//gson
implementation 'com.google.code.gson:gson:2.8.5'
}

AndroidManifest.xml
tambahkan 2 permission untuk mengakses local storage android kalian.

<?xml version="1.0" encoding="utf-8"?>


<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.myapplication">
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /
>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
/>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>

Model dokumen
buat class objek model dokumen, yang isinya berupa setter dan getter.

package com.example.myapplication.documentPDF;

import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;

/**
* @author ayubkukuh
* @since 1.0
*/
public class Modeldokumen {

public static class StatusPembayaranEntity {


@Expose
@SerializedName("penerima")
private String penerima;
@Expose
@SerializedName("tanggal")
private String tanggal;
@Expose
@SerializedName("jenispembayaran")
private String jenispembayaran;
@Expose
@SerializedName("nopayment")
private String nopayment;
@Expose
@SerializedName("sisa")
private int sisa;
@Expose
@SerializedName("total")
private int total;
@Expose
@SerializedName("kamar")
private String kamar;

public String getPenerima() {


return penerima;
}

public void setPenerima(String penerima) {


this.penerima = penerima;
}

public String getTanggal() {


return tanggal;
}

public void setTanggal(String tanggal) {


this.tanggal = tanggal;
}

public String getJenispembayaran() {


return jenispembayaran;
}

public void setJenispembayaran(String jenispembayaran) {


this.jenispembayaran = jenispembayaran;
}

public String getNopayment() {


return nopayment;
}

public void setNopayment(String nopayment) {


this.nopayment = nopayment;
}

public int getSisa() {


return sisa;
}

public void setSisa(int sisa) {


this.sisa = sisa;
}

public int getTotal() {


return total;
}

public void setTotal(int total) {


this.total = total;
}

public String getKamar() {


return kamar;
}

public void setKamar(String kamar) {


this.kamar = kamar;
}
}

public static class StatusDokumenEntity {


@Expose
@SerializedName("kartukuning")
private boolean kartukuning;
@Expose
@SerializedName("kartukeluarga")
private boolean kartukeluarga;
@Expose
@SerializedName("foto")
private boolean foto;
@Expose
@SerializedName("kitas")
private boolean kitas;
@Expose
@SerializedName("bukunikah")
private boolean bukunikah;
@Expose
@SerializedName("paspor")
private boolean paspor;
@Expose
@SerializedName("ktp")
private boolean ktp;

public boolean getKartukuning() {


return kartukuning;
}

public void setKartukuning(boolean kartukuning) {


this.kartukuning = kartukuning;
}

public boolean getKartukeluarga() {


return kartukeluarga;
}

public void setKartukeluarga(boolean kartukeluarga) {


this.kartukeluarga = kartukeluarga;
}

public boolean getFoto() {


return foto;
}

public void setFoto(boolean foto) {


this.foto = foto;
}

public boolean getKitas() {


return kitas;
}

public void setKitas(boolean kitas) {


this.kitas = kitas;
}

public boolean getBukunikah() {


return bukunikah;
}

public void setBukunikah(boolean bukunikah) {


this.bukunikah = bukunikah;
}

public boolean getPaspor() {


return paspor;
}

public void setPaspor(boolean paspor) {


this.paspor = paspor;
}

public boolean getKtp() {


return ktp;
}

public void setKtp(boolean ktp) {


this.ktp = ktp;
}
}

public static class DatapesertastatusOpenEntity {


@Expose
@SerializedName("nopaspor")
private String nopaspor;
@Expose
@SerializedName("noktp")
private String noktp;
@Expose
@SerializedName("nohp")
private String nohp;
@Expose
@SerializedName("namapeserta")
private String namapeserta;

public String getNopaspor() {


return nopaspor;
}

public void setNopaspor(String nopaspor) {


this.nopaspor = nopaspor;
}

public String getNoktp() {


return noktp;
}

public void setNoktp(String noktp) {


this.noktp = noktp;
}

public String getNohp() {


return nohp;
}

public void setNohp(String nohp) {


this.nohp = nohp;
}

public String getNamapeserta() {


return namapeserta;
}

public void setNamapeserta(String namapeserta) {


this.namapeserta = namapeserta;
}
}

public static class DatapaketEntity {


@Expose
@SerializedName("namapaket")
private String namapaket;
@Expose
@SerializedName("nopesanan")
private String nopesanan;

public String getNamapaket() {


return namapaket;
}

public void setNamapaket(String namapaket) {


this.namapaket = namapaket;
}

public String getNopesanan() {


return nopesanan;
}

public void setNopesanan(String nopesanan) {


this.nopesanan = nopesanan;
}

DokumenPDF
Buat class DokumenPDF, diclass ini terdapat fungsi-fungsi untuk membuat sebuah dokumen
dengan memanfaatkan library itexPdf 5. untuk {directorydocument} (tempat file
disimpan) sesuaikan dengan nama folder yang kalian ingginkan contoh "/dokumentpdf" dll

package com.example.myapplication.documentPDF;

import android.content.ActivityNotFoundException;
import android.os.Environment;
import android.util.Log;
import com.itextpdf.text.BaseColor;
import com.itextpdf.text.Chunk;
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Element;
import com.itextpdf.text.Font;
import com.itextpdf.text.PageSize;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.Rectangle;
import com.itextpdf.text.pdf.BaseFont;
import com.itextpdf.text.pdf.PdfPCell;
import com.itextpdf.text.pdf.PdfPTable;
import com.itextpdf.text.pdf.PdfWriter;
import com.itextpdf.text.pdf.draw.LineSeparator;
import com.itextpdf.text.pdf.draw.VerticalPositionMark;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.NumberFormat;
import java.util.Date;
import java.util.Locale;

/**
* @author ayubkukuh
* @since 1.0
*/
public class DokumenPDF {
private Locale localeID;
private NumberFormat formatRupiah;
public DokumenPDF() {
localeID = new Locale("in","ID");
formatRupiah = NumberFormat.getCurrencyInstance(localeID);
}
public void createdokumenPDF (Modeldokumen.DatapaketEntity datapaket,
Modeldokumen.DatapesertastatusOpenEntity ope
n,
Modeldokumen.StatusDokumenEntity dokumen,
Modeldokumen.StatusPembayaranEntity pembayar
an,
String buttonStatusdatapeserta,
String buttonStatusDokument,
String buttonStatusPembayaran) {
try {
//path untuk menyimpan file dokument PDF
Date now = new Date(); //tanggal sekarang
android.text.format.DateFormat.format("yyyy-MM-dd_hh:mm:ss",now);
String filename = "DokumentPDF" + now + ".pdf";
File defaultFile = new File(Environment.getExternalStorageDirector
y()
.getAbsolutePath() + "{directorydocument}");
if (!defaultFile.exists()) defaultFile.mkdirs();
File file = new File(defaultFile,filename);
if (file.exists()) {
file.delete();
file = new File(defaultFile,filename);
}
//buat objeck dokument
Document document = new Document();
PdfWriter.getInstance(document,new FileOutputStream(file));
document.open();
document.setPageSize(PageSize.A4);
document.addCreationDate();

document.addAuthor("Ayub kukuh");
document.addCreator("Ayub k.p");

//warna color Font


BaseColor mColorAccent = new BaseColor(0,153,204,255);

//ukururan Font
float mHeadingFontSize = 20.0f;
float mValueFontSize = 26.0f;

//objek BaseFont besechekbox, untuk membuat kotak checkbox yang di


ambil dari font type windings.ttf
//objek BaseFont baseunchekbox, untuk membuat uncheckbox yang diam
bil dari font type wingdings1.ttf
BaseFont basecheckbox = BaseFont.createFont("res/font/wingdings.tt
f",BaseFont.IDENTITY_H,false);
BaseFont baseuncheckbox = BaseFont.createFont("res/font/wingdings1
.ttf",BaseFont.IDENTITY_H,false);
BaseFont montserratregular = BaseFont.createFont("res/font/montser
ratregular.ttf","UTF-8",BaseFont.EMBEDDED);

//buat objeck Font dengan Constructor 3 arg : new Font(BaseFont,Si


zeFont,StyleFont)
Font checkbox = new Font(basecheckbox,30f,Font.BOLD);
Font uncheckbox = new Font(baseuncheckbox,30f,Font.NORMAL);

//garis pemisah (garis horisaontal)


LineSeparator lineSeparator = new LineSeparator();
lineSeparator.setLineColor(new BaseColor(0,0,0,68));

Font fontheader = new Font(montserratregular,36.0f,Font.NORMAL,Bas


eColor.BLACK);
Font fontnormal = new Font(montserratregular,mValueFontSize,Font.N
ORMAL,BaseColor.BLACK);
Font fontnormalcolorblue = new Font(montserratregular,mValueFontSi
ze,Font.NORMAL,mColorAccent);

//Chunk mempresentasikan potongan dari sebuah text, Chunk dapat be


risi singel karater atau bebrapa kalimat

//Nama paket
Chunk namapaketchunk = new Chunk(datapaket.getNamapaket(),fonthead
er);
Paragraph namapaketparagraf = new Paragraph(namapaketchunk);
namapaketparagraf.setAlignment(Element.ALIGN_LEFT);
document.add(namapaketparagraf);

//no pesanan
Chunk nomorpesanan = new Chunk("No.pesanan " + datapaket.getNopesa
nan(),fontnormalcolorblue);
Paragraph nopesananparagraf = new Paragraph(nomorpesanan);
nopesananparagraf.setAlignment(Element.ALIGN_LEFT);
document.add(nopesananparagraf);

//lineSeparator
document.add(new Paragraph(""));
document.add(new Chunk(lineSeparator));
document.add(new Paragraph(""));

//data peserta
Chunk datapesertachunk = new Chunk(new VerticalPositionMark());
Paragraph datapesertaparagraf = new Paragraph("Data peserta",fontn
ormal);
datapesertaparagraf.add(new Chunk(datapesertachunk));
datapesertaparagraf.add(buttonStatusdatapeserta);
document.add(datapesertaparagraf);

//lineSeparator
document.add(new Paragraph(""));
document.add(new Chunk(lineSeparator));
document.add(new Paragraph(""));

//namapeserta
Chunk namapesertachunk = new Chunk(new VerticalPositionMark());
Paragraph namapesertaparagraf = new Paragraph("Nama peserta",fontn
ormal);
namapesertaparagraf.add(new Chunk(namapesertachunk));
namapesertaparagraf.add(open.getNamapeserta());
document.add(namapesertaparagraf);

//nohp
Chunk pnohchunk = new Chunk(new VerticalPositionMark());
Paragraph nohpaparagraf = new Paragraph("No.Hp",fontnormal);
nohpaparagraf.add(new Chunk(pnohchunk));
nohpaparagraf.add(open.getNohp());
document.add(nohpaparagraf);

//noktp
Chunk noktpchunk = new Chunk(new VerticalPositionMark());
Paragraph noktpparagraf = new Paragraph("No.Ktp",fontnormal);
noktpparagraf.add(new Chunk(noktpchunk));
noktpparagraf.add(open.getNoktp());
document.add(noktpparagraf);

//nopasspor
Chunk nopasporchunk = new Chunk(new VerticalPositionMark());
Paragraph nopasporparagraf = new Paragraph("No.Pasport",fontnormal

nopasporparagraf.add(new Chunk(nopasporchunk));
nopasporparagraf.add(open.getNopaspor());
document.add(nopasporparagraf);

//lineSeparator
document.add(new Paragraph(""));
document.add(new Chunk(lineSeparator));
document.add(new Paragraph(""));

//status dokumen
Chunk dokumenchunk = new Chunk(new VerticalPositionMark());
Paragraph dokumenparagraf = new Paragraph("Status Dokumen",fontnor
mal);
dokumenparagraf.add(new Chunk(dokumenchunk));
dokumenparagraf.add(buttonStatusDokument);
document.add(dokumenparagraf);

document.add(new Paragraph(""));
document.add(new Chunk(lineSeparator));
document.add(new Paragraph(""));

//R = untuk untuk membuat bentuk checkbox


//o = untuk membuat bentuk uncheckbox
//buat objeck table
PdfPTable table = new PdfPTable(4); // 4 columns.

table.setHorizontalAlignment(Element.ALIGN_LEFT);
PdfPCell cell1 = new PdfPCell(new Paragraph(dokumen.getKtp() ? "R"
: "o",dokumen.getKtp() ? checkbox : uncheckbox));
PdfPCell cell2 = new PdfPCell(new Paragraph("KTP",fontnormal));
PdfPCell cell3 = new PdfPCell(new Paragraph(dokumen.getFoto() ? "R
" : "o",dokumen.getFoto() ? checkbox : uncheckbox));
PdfPCell cell4 = new PdfPCell(new Paragraph("FOTO",fontnormal));
PdfPCell cell5 = new PdfPCell(new Paragraph(dokumen.getPaspor() ?
"R" : "o",dokumen.getPaspor() ? checkbox : uncheckbox));
PdfPCell cell6 = new PdfPCell(new Paragraph("PASPORT",fontnormal))
;
PdfPCell cell7 = new PdfPCell(new Paragraph(dokumen.getKartukeluar
ga() ? "R" : "o",dokumen.getKartukeluarga() ? checkbox : uncheckbox));
PdfPCell cell8 = new PdfPCell(new Paragraph("KK",fontnormal));
PdfPCell cell9 = new PdfPCell(new Paragraph(dokumen.getBukunikah()
? "R" : "o",dokumen.getBukunikah() ? checkbox : uncheckbox));
PdfPCell cell10 = new PdfPCell(new Paragraph("BUKU NIKAH",fontnorm
al));
PdfPCell cell11 = new PdfPCell(new Paragraph(dokumen.getKartukunin
g() ? "R" : "o",dokumen.getKartukuning() ? checkbox : uncheckbox));
PdfPCell cell12 = new PdfPCell(new Paragraph("KARTU KUNING",fontno
rmal));
PdfPCell cell13 = new PdfPCell(new Paragraph(dokumen.getKitas() ?
"R" : "o",dokumen.getKitas() ? checkbox : uncheckbox));
PdfPCell cell14 = new PdfPCell(new Paragraph("KITAS",fontnormal));
PdfPCell cell15 = new PdfPCell(new Paragraph("",fontnormal));
PdfPCell cell16 = new PdfPCell(new Paragraph("",fontnormal));

//setiap cell set tanpa border


cell1.setBorder(Rectangle.NO_BORDER);
cell2.setBorder(Rectangle.NO_BORDER);
cell3.setBorder(Rectangle.NO_BORDER);
cell4.setBorder(Rectangle.NO_BORDER);
cell5.setBorder(Rectangle.NO_BORDER);
cell6.setBorder(Rectangle.NO_BORDER);
cell7.setBorder(Rectangle.NO_BORDER);
cell8.setBorder(Rectangle.NO_BORDER);
cell9.setBorder(Rectangle.NO_BORDER);
cell10.setBorder(Rectangle.NO_BORDER);
cell11.setBorder(Rectangle.NO_BORDER);
cell12.setBorder(Rectangle.NO_BORDER);
cell13.setBorder(Rectangle.NO_BORDER);
cell14.setBorder(Rectangle.NO_BORDER);
cell15.setBorder(Rectangle.NO_BORDER);
cell16.setBorder(Rectangle.NO_BORDER);
cell3.setBorder(Rectangle.NO_BORDER);

//setting align setiap cell


cell1.setHorizontalAlignment(Element.ALIGN_CENTER);
cell2.setHorizontalAlignment(Element.ALIGN_LEFT);
cell3.setHorizontalAlignment(Element.ALIGN_CENTER);
cell4.setHorizontalAlignment(Element.ALIGN_LEFT);
cell5.setHorizontalAlignment(Element.ALIGN_CENTER);
cell6.setHorizontalAlignment(Element.ALIGN_LEFT);
cell7.setHorizontalAlignment(Element.ALIGN_CENTER);
cell8.setHorizontalAlignment(Element.ALIGN_LEFT);
cell9.setHorizontalAlignment(Element.ALIGN_CENTER);
cell10.setHorizontalAlignment(Element.ALIGN_LEFT);
cell11.setHorizontalAlignment(Element.ALIGN_CENTER);
cell12.setHorizontalAlignment(Element.ALIGN_LEFT);
cell13.setHorizontalAlignment(Element.ALIGN_CENTER);
cell14.setHorizontalAlignment(Element.ALIGN_LEFT);
cell15.setHorizontalAlignment(Element.ALIGN_CENTER);
cell16.setHorizontalAlignment(Element.ALIGN_LEFT);

table.addCell(cell1);
table.addCell(cell2);
table.addCell(cell3);
table.addCell(cell4);
table.addCell(cell5);
table.addCell(cell6);
table.addCell(cell7);
table.addCell(cell8);
table.addCell(cell9);
table.addCell(cell10);
table.addCell(cell11);
table.addCell(cell12);
table.addCell(cell13);
table.addCell(cell14);
table.addCell(cell15);
table.addCell(cell16);

table.setWidthPercentage(100);
float[] columnWidths = new float[]{10f,50f,10f,50f};
table.setWidths(columnWidths);
document.add(table);

//seprator
document.add(new Paragraph(""));
document.add(new Chunk(lineSeparator));
document.add(new Paragraph(""));

//status pembayaran
Chunk pembayaranchunk = new Chunk(new VerticalPositionMark());
Paragraph pembayaranparagraf = new Paragraph("Status Pembayaran",f
ontnormal);
pembayaranparagraf.add(new Chunk(pembayaranchunk));
pembayaranparagraf.add(buttonStatusPembayaran);
document.add(pembayaranparagraf);

//garis horizontal
document.add(new Paragraph(""));
document.add(new Chunk(lineSeparator));
document.add(new Paragraph(""));

//tiepkamar
Chunk tipekamarchunk = new Chunk(new VerticalPositionMark());
Paragraph tipekamarparagraf = new Paragraph("Kamar " + pembayaran.
getKamar(),fontnormal);

//total
tipekamarparagraf.add(new Chunk(tipekamarchunk));
tipekamarparagraf.add("Total: " + formatRupiah.format(pembayaran.g
etTotal()));
document.add(tipekamarparagraf);

//sisa
Chunk sisachunk = new Chunk(new VerticalPositionMark());
Paragraph sisaparagraf = new Paragraph("",fontnormal);
sisaparagraf.add(new Chunk(sisachunk));
sisaparagraf.add("Sisa : " + formatRupiah.format(pembayaran.getSis
a()));
document.add(sisaparagraf);

//pay-tanggal
Chunk paydatebayarchunk = new Chunk(new VerticalPositionMark());
Paragraph paydateparagraf = new Paragraph(pembayaran.getNopayment(
),fontnormal);
paydateparagraf.add(new Chunk(paydatebayarchunk));
paydateparagraf.add(pembayaran.getTanggal());
document.add(paydateparagraf);

//totalbayar
Chunk totalbayarchunk = new Chunk(new VerticalPositionMark());
Paragraph totalbayarparagraf = new Paragraph("Total Bayar",fontnor
mal);
totalbayarparagraf.add(new Chunk(totalbayarchunk));
totalbayarparagraf.add(formatRupiah.format(pembayaran.getTotal() -
pembayaran.getSisa()));
document.add(totalbayarparagraf);

//close dokument
document.close();

} catch (IOException | DocumentException ie) {


Log.e("createPdf",ie.getLocalizedMessage());
} catch (ActivityNotFoundException ae) {
Log.e("createPdf",ae.getLocalizedMessage());
}
}
}

Buka file MainActivity.class buat 2 method yang pertama requestStoragepermission dan


yang kedua method cetak(), pada method cetak() kita buat instance dari
modeldokumen.class. Kita set setiap nilai untuk setiap property dan buat instance
dokumenPDf.class, panggil method createdokumentPDF() dengan memparsing argument
modeldokumen kita

package com.example.myapplication;

import androidx.appcompat.app.AppCompatActivity;

import android.Manifest;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

import com.example.myapplication.documentPDF.DokumenPDF;
import com.example.myapplication.documentPDF.Modeldokumen;
import com.karumi.dexter.Dexter;
import com.karumi.dexter.MultiplePermissionsReport;
import com.karumi.dexter.PermissionToken;
import com.karumi.dexter.listener.DexterError;
import com.karumi.dexter.listener.PermissionRequest;
import com.karumi.dexter.listener.PermissionRequestErrorListener;
import com.karumi.dexter.listener.multi.MultiplePermissionsListener;

import java.util.List;

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

Button btncetak = findViewById(R.id.cetak);


btncetak.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
requestStoragePermission();
}
});
}

private void Cetak(){


//buat objek model
Modeldokumen.DatapaketEntity datapaketEntity = new Modeldokumen.Datapa
ketEntity();
Modeldokumen.DatapesertastatusOpenEntity datapesertastatusOpenEntity =
new Modeldokumen.DatapesertastatusOpenEntity();
Modeldokumen.StatusDokumenEntity dokumenEntity = new Modeldokumen.Stat
usDokumenEntity();
Modeldokumen.StatusPembayaranEntity pembayaranEntity = new Modeldokume
n.StatusPembayaranEntity();

//header
datapaketEntity.setNamapaket("Paket ka'bah");
datapaketEntity.setNopesanan("10");

//data perserta
datapesertastatusOpenEntity.setNamapeserta("Ayub kukuh P");
datapesertastatusOpenEntity.setNohp("0881238406000");
datapesertastatusOpenEntity.setNoktp("17012000099");
datapesertastatusOpenEntity.setNopaspor("00001234AB");

//data dokument
dokumenEntity.setKtp(true);
dokumenEntity.setBukunikah(false);
dokumenEntity.setKartukeluarga(true);
dokumenEntity.setKitas(false);
dokumenEntity.setFoto(true);
dokumenEntity.setKartukuning(true);
dokumenEntity.setPaspor(true);

//pembayaran
pembayaranEntity.setKamar("Single");
pembayaranEntity.setTotal(10000000);
pembayaranEntity.setSisa(4000000);
pembayaranEntity.setJenispembayaran("Kredit");
pembayaranEntity.setTanggal("14-09-2019");
pembayaranEntity.setPenerima("Si A");
//buat dokumentPDF
DokumenPDF dokumenPDF = new DokumenPDF();
dokumenPDF.createdokumenPDF(datapaketEntity,
datapesertastatusOpenEntity,
dokumenEntity,
pembayaranEntity,
"Approve",
"Open",
"Open");

Toast.makeText(this,"Dokument tersimpan",Toast.LENGTH_SHORT).show();
}

private void requestStoragePermission() {


Dexter.withActivity(this)
.withPermissions(
Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.WRITE_EXTERNAL_STORAGE)
.withListener(new MultiplePermissionsListener() {
@Override
public void onPermissionsChecked(MultiplePermissionsReport
report) {
// check if all permissions are granted
if (report.areAllPermissionsGranted()) {
Cetak();
}
// check for permanent denial of any permission
if (report.isAnyPermissionPermanentlyDenied()) {
// show alert dialog navigating to Settings
}
}

@Override
public void onPermissionRationaleShouldBeShown(List permis
sions,PermissionToken token) {
token.continuePermissionRequest();
}
}).
withErrorListener(new PermissionRequestErrorListener() {
@Override
public void onError(DexterError error) {
Toast.makeText(getApplicationContext(),"Error occurred
! ",Toast.LENGTH_SHORT).show();
}
})
.onSameThread()
.check();
}
}

Strukut projeknya seperti ini

Jalankan aplikasinya => klik tombol Create dokument

Setelah dokumen pdf berhasil tersimpan, silakan lihat di storage => {nama directory} => file
dokumen
Selamat mencoba, Semoga bermanfaat :D

SHARE THIS:  Facebook  Twitter  Google+  Pinterest  Linkedin

YOU MAY ALSO LIKE

iText PDF

PREVIOUS NEXT
You are viewing Last Post Cara membagikan File PDF di android

POST COMMENT BLOGGER DISQUS FACEBOOK

1 Komentar:

Anon 3 Juni 2021 13.36

Mas kalau mau tampil list bagaimana ya??


Balas

Masukkan komentar Anda...

Beri komentar sebagai: Google Account

Publikasikan Pratinjau

RANDOM POSTS TAGS RECENT POSTS

Bar Chart ButterKnife Zelezny IText PDF

Cara Cepat Crop Image DTO Generator

MPAndroidChart Screenshoot Share File

Speedometer SpeedView

Created By ThemeXpose 

Anda mungkin juga menyukai