package
com.gtappdevelopers.kotlingfgproject
import
android.Manifest.permission.READ_EXTERNAL_STORAGE
import
android.Manifest.permission.WRITE_EXTERNAL_STORAGE
import
android.content.pm.PackageManager
import
android.graphics.*
import
android.graphics.pdf.PdfDocument
import
android.os.Build
import
android.os.Bundle
import
android.os.Environment
import
android.widget.Button
import
android.widget.Toast
import
androidx.annotation.RequiresApi
import
androidx.appcompat.app.AppCompatActivity
import
androidx.core.app.ActivityCompat
import
androidx.core.content.ContextCompat
import
java.io.File
import
java.io.FileOutputStream
class
MainActivity : AppCompatActivity() {
lateinit var generatePDFBtn: Button
var pageHeight =
1120
var pageWidth =
792
lateinit var bmp: Bitmap
lateinit var scaledbmp: Bitmap
var PERMISSION_CODE =
101
override fun onCreate(savedInstanceState: Bundle?) {
super
.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
generatePDFBtn = findViewById(R.id.idBtnGeneratePdf)
bmp = BitmapFactory.decodeResource(resources, R.drawable.android)
scaledbmp = Bitmap.createScaledBitmap(bmp,
140
,
140
,
false
)
if
(checkPermissions()) {
Toast.makeText(
this
,
"Permissions Granted.."
, Toast.LENGTH_SHORT).show()
}
else
{
requestPermission()
}
generatePDFBtn.setOnClickListener {
if
(android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT) {
generatePDF()
}
}
}
@RequiresApi
(Build.VERSION_CODES.KITKAT)
fun generatePDF() {
var pdfDocument: PdfDocument = PdfDocument()
var paint: Paint = Paint()
var title: Paint = Paint()
var myPageInfo: PdfDocument.PageInfo? =
PdfDocument.PageInfo.Builder(pageWidth, pageHeight,
1
).create()
var myPage: PdfDocument.Page = pdfDocument.startPage(myPageInfo)
var canvas: Canvas = myPage.canvas
canvas.drawBitmap(scaledbmp, 56F, 40F, paint)
title.setTypeface(Typeface.create(Typeface.DEFAULT, Typeface.NORMAL))
title.textSize = 15F
title.setColor(ContextCompat.getColor(
this
, R.color.purple_200))
canvas.drawText(
"A portal for IT professionals."
, 209F, 100F, title)
canvas.drawText(
"Geeks for Geeks"
, 209F, 80F, title)
title.setTypeface(Typeface.defaultFromStyle(Typeface.NORMAL))
title.setColor(ContextCompat.getColor(
this
, R.color.purple_200))
title.textSize = 15F
title.textAlign = Paint.Align.CENTER
canvas.drawText(
"This is sample document which we have created."
, 396F, 560F, title)
pdfDocument.finishPage(myPage)
val file: File = File(Environment.getExternalStorageDirectory(),
"GFG.pdf"
)
try
{
pdfDocument.writeTo(FileOutputStream(file))
Toast.makeText(applicationContext,
"PDF file generated.."
, Toast.LENGTH_SHORT).show()
}
catch
(e: Exception) {
e.printStackTrace()
Toast.makeText(applicationContext,
"Fail to generate PDF file.."
, Toast.LENGTH_SHORT)
.show()
}
pdfDocument.close()
}
fun checkPermissions(): Boolean {
var writeStoragePermission = ContextCompat.checkSelfPermission(
applicationContext,
WRITE_EXTERNAL_STORAGE
)
var readStoragePermission = ContextCompat.checkSelfPermission(
applicationContext,
READ_EXTERNAL_STORAGE
)
return
writeStoragePermission == PackageManager.PERMISSION_GRANTED
&& readStoragePermission == PackageManager.PERMISSION_GRANTED
}
fun requestPermission() {
ActivityCompat.requestPermissions(
this
,
arrayOf(READ_EXTERNAL_STORAGE, WRITE_EXTERNAL_STORAGE), PERMISSION_CODE
)
}
override fun onRequestPermissionsResult(
requestCode: Int,
permissions: Array<out String>,
grantResults: IntArray
) {
super
.onRequestPermissionsResult(requestCode, permissions, grantResults)
if
(requestCode == PERMISSION_CODE) {
if
(grantResults.size >
0
) {
if
(grantResults[
0
] == PackageManager.PERMISSION_GRANTED && grantResults[
1
]
== PackageManager.PERMISSION_GRANTED) {
Toast.makeText(
this
,
"Permission Granted.."
, Toast.LENGTH_SHORT).show()
}
else
{
Toast.makeText(
this
,
"Permission Denied.."
, Toast.LENGTH_SHORT).show()
finish()
}
}
}
}
}