Ayub
kukuh
Home / iText PDF / Cara membuat Dokumen PDF dengan library itexPDF 5 di Andorid
ARSIP BLOG
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.
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 {
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");
//ukururan Font
float mHeadingFontSize = 20.0f;
float mValueFontSize = 26.0f;
//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(""));
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));
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();
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;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//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();
}
@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();
}
}
Setelah dokumen pdf berhasil tersimpan, silakan lihat di storage => {nama directory} => file
dokumen
Selamat mencoba, Semoga bermanfaat :D
iText PDF
PREVIOUS NEXT
You are viewing Last Post Cara membagikan File PDF di android
1 Komentar:
Publikasikan Pratinjau
Speedometer SpeedView
Created By ThemeXpose