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
[Link] (font type) (cari di internet) Speedview
[Link] (font type) (cari diinternet)
[Link] (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"?>
<[Link] xmlns:android="[Link] Cara Cepat Crop Image IText PDF
[Link]/apk/res/android"
DTO Generator MPAndroidChart
xmlns:app="[Link]
xmlns:tools="[Link] 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">
</[Link] >
Gradle Script
pada bagian Gradle level aplikasi (Module:app) tambahkan pada bagian depedencies library
itextpdf, Dexter dan Gson. Itextpdf untuk membuat dokumen dengan [Link], 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 '[Link]:appcompat:1.0.2'
implementation '[Link]:constraintlayout:1.1.3'
testImplementation 'junit:junit:4.12'
androidTestImplementation '[Link]:runner:1.1.1'
androidTestImplementation '[Link]:espresso-core:3.1.1'
//itextfpdf
implementation '[Link]:itextg:5.5.10'
// Dexter runtime permissions
implementation "[Link]:dexter:5.0.0"
//gson
implementation '[Link]:gson:2.8.5'
}
[Link]
tambahkan 2 permission untuk mengakses local storage android kalian.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="[Link]
package="[Link]">
<uses-permission android:name="[Link].READ_EXTERNAL_STORAGE" /
>
<uses-permission android:name="[Link].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="[Link]" />
<category android:name="[Link]" />
</intent-filter>
</activity>
</application>
</manifest>
Model dokumen
buat class objek model dokumen, yang isinya berupa setter dan getter.
package [Link];
import [Link];
import [Link];
/**
* @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) {
[Link] = penerima;
}
public String getTanggal() {
return tanggal;
}
public void setTanggal(String tanggal) {
[Link] = tanggal;
}
public String getJenispembayaran() {
return jenispembayaran;
}
public void setJenispembayaran(String jenispembayaran) {
[Link] = jenispembayaran;
}
public String getNopayment() {
return nopayment;
}
public void setNopayment(String nopayment) {
[Link] = nopayment;
}
public int getSisa() {
return sisa;
}
public void setSisa(int sisa) {
[Link] = sisa;
}
public int getTotal() {
return total;
}
public void setTotal(int total) {
[Link] = total;
}
public String getKamar() {
return kamar;
}
public void setKamar(String kamar) {
[Link] = 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) {
[Link] = kartukuning;
}
public boolean getKartukeluarga() {
return kartukeluarga;
}
public void setKartukeluarga(boolean kartukeluarga) {
[Link] = kartukeluarga;
}
public boolean getFoto() {
return foto;
}
public void setFoto(boolean foto) {
[Link] = foto;
}
public boolean getKitas() {
return kitas;
}
public void setKitas(boolean kitas) {
[Link] = kitas;
}
public boolean getBukunikah() {
return bukunikah;
}
public void setBukunikah(boolean bukunikah) {
[Link] = bukunikah;
}
public boolean getPaspor() {
return paspor;
}
public void setPaspor(boolean paspor) {
[Link] = paspor;
}
public boolean getKtp() {
return ktp;
}
public void setKtp(boolean ktp) {
[Link] = 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) {
[Link] = nopaspor;
}
public String getNoktp() {
return noktp;
}
public void setNoktp(String noktp) {
[Link] = noktp;
}
public String getNohp() {
return nohp;
}
public void setNohp(String nohp) {
[Link] = nohp;
}
public String getNamapeserta() {
return namapeserta;
}
public void setNamapeserta(String namapeserta) {
[Link] = 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) {
[Link] = namapaket;
}
public String getNopesanan() {
return nopesanan;
}
public void setNopesanan(String nopesanan) {
[Link] = 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 [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
/**
* @author ayubkukuh
* @since 1.0
*/
public class DokumenPDF {
private Locale localeID;
private NumberFormat formatRupiah;
public DokumenPDF() {
localeID = new Locale("in","ID");
formatRupiah = [Link](localeID);
}
public void createdokumenPDF ([Link] datapaket,
[Link] ope
n,
[Link] dokumen,
[Link] pembayar
an,
String buttonStatusdatapeserta,
String buttonStatusDokument,
String buttonStatusPembayaran) {
try {
//path untuk menyimpan file dokument PDF
Date now = new Date(); //tanggal sekarang
[Link]("yyyy-MM-dd_hh:mm:ss",now);
String filename = "DokumentPDF" + now + ".pdf";
File defaultFile = new File([Link]
y()
.getAbsolutePath() + "{directorydocument}");
if (![Link]()) [Link]();
File file = new File(defaultFile,filename);
if ([Link]()) {
[Link]();
file = new File(defaultFile,filename);
}
//buat objeck dokument
Document document = new Document();
[Link](document,new FileOutputStream(file));
[Link]();
[Link](PageSize.A4);
[Link]();
[Link]("Ayub kukuh");
[Link]("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 [Link]
//objek BaseFont baseunchekbox, untuk membuat uncheckbox yang diam
bil dari font type [Link]
BaseFont basecheckbox = [Link]("res/font/[Link]
f",BaseFont.IDENTITY_H,false);
BaseFont baseuncheckbox = [Link]("res/font/wingdings1
.ttf",BaseFont.IDENTITY_H,false);
BaseFont montserratregular = [Link]("res/font/montser
[Link]","UTF-8",[Link]);
//buat objeck Font dengan Constructor 3 arg : new Font(BaseFont,Si
zeFont,StyleFont)
Font checkbox = new Font(basecheckbox,30f,[Link]);
Font uncheckbox = new Font(baseuncheckbox,30f,[Link]);
//garis pemisah (garis horisaontal)
LineSeparator lineSeparator = new LineSeparator();
[Link](new BaseColor(0,0,0,68));
Font fontheader = new Font(montserratregular,36.0f,[Link],Bas
[Link]);
Font fontnormal = new Font(montserratregular,mValueFontSize,Font.N
ORMAL,[Link]);
Font fontnormalcolorblue = new Font(montserratregular,mValueFontSi
ze,[Link],mColorAccent);
//Chunk mempresentasikan potongan dari sebuah text, Chunk dapat be
risi singel karater atau bebrapa kalimat
//Nama paket
Chunk namapaketchunk = new Chunk([Link](),fonthead
er);
Paragraph namapaketparagraf = new Paragraph(namapaketchunk);
[Link](Element.ALIGN_LEFT);
[Link](namapaketparagraf);
//no pesanan
Chunk nomorpesanan = new Chunk("[Link] " + [Link]
nan(),fontnormalcolorblue);
Paragraph nopesananparagraf = new Paragraph(nomorpesanan);
[Link](Element.ALIGN_LEFT);
[Link](nopesananparagraf);
//lineSeparator
[Link](new Paragraph(""));
[Link](new Chunk(lineSeparator));
[Link](new Paragraph(""));
//data peserta
Chunk datapesertachunk = new Chunk(new VerticalPositionMark());
Paragraph datapesertaparagraf = new Paragraph("Data peserta",fontn
ormal);
[Link](new Chunk(datapesertachunk));
[Link](buttonStatusdatapeserta);
[Link](datapesertaparagraf);
//lineSeparator
[Link](new Paragraph(""));
[Link](new Chunk(lineSeparator));
[Link](new Paragraph(""));
//namapeserta
Chunk namapesertachunk = new Chunk(new VerticalPositionMark());
Paragraph namapesertaparagraf = new Paragraph("Nama peserta",fontn
ormal);
[Link](new Chunk(namapesertachunk));
[Link]([Link]());
[Link](namapesertaparagraf);
//nohp
Chunk pnohchunk = new Chunk(new VerticalPositionMark());
Paragraph nohpaparagraf = new Paragraph("[Link]",fontnormal);
[Link](new Chunk(pnohchunk));
[Link]([Link]());
[Link](nohpaparagraf);
//noktp
Chunk noktpchunk = new Chunk(new VerticalPositionMark());
Paragraph noktpparagraf = new Paragraph("[Link]",fontnormal);
[Link](new Chunk(noktpchunk));
[Link]([Link]());
[Link](noktpparagraf);
//nopasspor
Chunk nopasporchunk = new Chunk(new VerticalPositionMark());
Paragraph nopasporparagraf = new Paragraph("[Link]",fontnormal
);
[Link](new Chunk(nopasporchunk));
[Link]([Link]());
[Link](nopasporparagraf);
//lineSeparator
[Link](new Paragraph(""));
[Link](new Chunk(lineSeparator));
[Link](new Paragraph(""));
//status dokumen
Chunk dokumenchunk = new Chunk(new VerticalPositionMark());
Paragraph dokumenparagraf = new Paragraph("Status Dokumen",fontnor
mal);
[Link](new Chunk(dokumenchunk));
[Link](buttonStatusDokument);
[Link](dokumenparagraf);
[Link](new Paragraph(""));
[Link](new Chunk(lineSeparator));
[Link](new Paragraph(""));
//R = untuk untuk membuat bentuk checkbox
//o = untuk membuat bentuk uncheckbox
//buat objeck table
PdfPTable table = new PdfPTable(4); // 4 columns.
[Link](Element.ALIGN_LEFT);
PdfPCell cell1 = new PdfPCell(new Paragraph([Link]() ? "R"
: "o",[Link]() ? checkbox : uncheckbox));
PdfPCell cell2 = new PdfPCell(new Paragraph("KTP",fontnormal));
PdfPCell cell3 = new PdfPCell(new Paragraph([Link]() ? "R
" : "o",[Link]() ? checkbox : uncheckbox));
PdfPCell cell4 = new PdfPCell(new Paragraph("FOTO",fontnormal));
PdfPCell cell5 = new PdfPCell(new Paragraph([Link]() ?
"R" : "o",[Link]() ? checkbox : uncheckbox));
PdfPCell cell6 = new PdfPCell(new Paragraph("PASPORT",fontnormal))
;
PdfPCell cell7 = new PdfPCell(new Paragraph([Link]
ga() ? "R" : "o",[Link]() ? checkbox : uncheckbox));
PdfPCell cell8 = new PdfPCell(new Paragraph("KK",fontnormal));
PdfPCell cell9 = new PdfPCell(new Paragraph([Link]()
? "R" : "o",[Link]() ? checkbox : uncheckbox));
PdfPCell cell10 = new PdfPCell(new Paragraph("BUKU NIKAH",fontnorm
al));
PdfPCell cell11 = new PdfPCell(new Paragraph([Link]
g() ? "R" : "o",[Link]() ? checkbox : uncheckbox));
PdfPCell cell12 = new PdfPCell(new Paragraph("KARTU KUNING",fontno
rmal));
PdfPCell cell13 = new PdfPCell(new Paragraph([Link]() ?
"R" : "o",[Link]() ? 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
[Link](Rectangle.NO_BORDER);
[Link](Rectangle.NO_BORDER);
[Link](Rectangle.NO_BORDER);
[Link](Rectangle.NO_BORDER);
[Link](Rectangle.NO_BORDER);
[Link](Rectangle.NO_BORDER);
[Link](Rectangle.NO_BORDER);
[Link](Rectangle.NO_BORDER);
[Link](Rectangle.NO_BORDER);
[Link](Rectangle.NO_BORDER);
[Link](Rectangle.NO_BORDER);
[Link](Rectangle.NO_BORDER);
[Link](Rectangle.NO_BORDER);
[Link](Rectangle.NO_BORDER);
[Link](Rectangle.NO_BORDER);
[Link](Rectangle.NO_BORDER);
[Link](Rectangle.NO_BORDER);
//setting align setiap cell
[Link](Element.ALIGN_CENTER);
[Link](Element.ALIGN_LEFT);
[Link](Element.ALIGN_CENTER);
[Link](Element.ALIGN_LEFT);
[Link](Element.ALIGN_CENTER);
[Link](Element.ALIGN_LEFT);
[Link](Element.ALIGN_CENTER);
[Link](Element.ALIGN_LEFT);
[Link](Element.ALIGN_CENTER);
[Link](Element.ALIGN_LEFT);
[Link](Element.ALIGN_CENTER);
[Link](Element.ALIGN_LEFT);
[Link](Element.ALIGN_CENTER);
[Link](Element.ALIGN_LEFT);
[Link](Element.ALIGN_CENTER);
[Link](Element.ALIGN_LEFT);
[Link](cell1);
[Link](cell2);
[Link](cell3);
[Link](cell4);
[Link](cell5);
[Link](cell6);
[Link](cell7);
[Link](cell8);
[Link](cell9);
[Link](cell10);
[Link](cell11);
[Link](cell12);
[Link](cell13);
[Link](cell14);
[Link](cell15);
[Link](cell16);
[Link](100);
float[] columnWidths = new float[]{10f,50f,10f,50f};
[Link](columnWidths);
[Link](table);
//seprator
[Link](new Paragraph(""));
[Link](new Chunk(lineSeparator));
[Link](new Paragraph(""));
//status pembayaran
Chunk pembayaranchunk = new Chunk(new VerticalPositionMark());
Paragraph pembayaranparagraf = new Paragraph("Status Pembayaran",f
ontnormal);
[Link](new Chunk(pembayaranchunk));
[Link](buttonStatusPembayaran);
[Link](pembayaranparagraf);
//garis horizontal
[Link](new Paragraph(""));
[Link](new Chunk(lineSeparator));
[Link](new Paragraph(""));
//tiepkamar
Chunk tipekamarchunk = new Chunk(new VerticalPositionMark());
Paragraph tipekamarparagraf = new Paragraph("Kamar " + pembayaran.
getKamar(),fontnormal);
//total
[Link](new Chunk(tipekamarchunk));
[Link]("Total: " + [Link](pembayaran.g
etTotal()));
[Link](tipekamarparagraf);
//sisa
Chunk sisachunk = new Chunk(new VerticalPositionMark());
Paragraph sisaparagraf = new Paragraph("",fontnormal);
[Link](new Chunk(sisachunk));
[Link]("Sisa : " + [Link]([Link]
a()));
[Link](sisaparagraf);
//pay-tanggal
Chunk paydatebayarchunk = new Chunk(new VerticalPositionMark());
Paragraph paydateparagraf = new Paragraph([Link](
),fontnormal);
[Link](new Chunk(paydatebayarchunk));
[Link]([Link]());
[Link](paydateparagraf);
//totalbayar
Chunk totalbayarchunk = new Chunk(new VerticalPositionMark());
Paragraph totalbayarparagraf = new Paragraph("Total Bayar",fontnor
mal);
[Link](new Chunk(totalbayarchunk));
[Link]([Link]([Link]() -
[Link]()));
[Link](totalbayarparagraf);
//close dokument
[Link]();
} catch (IOException | DocumentException ie) {
Log.e("createPdf",[Link]());
} catch (ActivityNotFoundException ae) {
Log.e("createPdf",[Link]());
}
}
}
Buka file [Link] buat 2 method yang pertama requestStoragepermission dan
yang kedua method cetak(), pada method cetak() kita buat instance dari
[Link]. Kita set setiap nilai untuk setiap property dan buat instance
[Link], panggil method createdokumentPDF() dengan memparsing argument
modeldokumen kita
package [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
[Link](savedInstanceState);
setContentView([Link].activity_main);
Button btncetak = findViewById([Link]);
[Link](new [Link]() {
@Override
public void onClick(View view) {
requestStoragePermission();
}
});
}
private void Cetak(){
//buat objek model
[Link] datapaketEntity = new [Link]
ketEntity();
[Link] datapesertastatusOpenEntity =
new [Link]();
[Link] dokumenEntity = new [Link]
usDokumenEntity();
[Link] pembayaranEntity = new Modeldokume
[Link]();
//header
[Link]("Paket ka'bah");
[Link]("10");
//data perserta
[Link]("Ayub kukuh P");
[Link]("0881238406000");
[Link]("17012000099");
[Link]("00001234AB");
//data dokument
[Link](true);
[Link](false);
[Link](true);
[Link](false);
[Link](true);
[Link](true);
[Link](true);
//pembayaran
[Link]("Single");
[Link](10000000);
[Link](4000000);
[Link]("Kredit");
[Link]("14-09-2019");
[Link]("Si A");
//buat dokumentPDF
DokumenPDF dokumenPDF = new DokumenPDF();
[Link](datapaketEntity,
datapesertastatusOpenEntity,
dokumenEntity,
pembayaranEntity,
"Approve",
"Open",
"Open");
[Link](this,"Dokument tersimpan",Toast.LENGTH_SHORT).show();
}
private void requestStoragePermission() {
[Link](this)
.withPermissions(
[Link].READ_EXTERNAL_STORAGE,
[Link].WRITE_EXTERNAL_STORAGE)
.withListener(new MultiplePermissionsListener() {
@Override
public void onPermissionsChecked(MultiplePermissionsReport
report) {
// check if all permissions are granted
if ([Link]()) {
Cetak();
}
// check for permanent denial of any permission
if ([Link]()) {
// show alert dialog navigating to Settings
}
}
@Override
public void onPermissionRationaleShouldBeShown(List permis
sions,PermissionToken token) {
[Link]();
}
}).
withErrorListener(new PermissionRequestErrorListener() {
@Override
public void onError(DexterError error) {
[Link](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