import
android.content.pm.PackageManager;
import
android.graphics.Bitmap;
import
android.graphics.BitmapFactory;
import
android.graphics.Canvas;
import
android.graphics.Paint;
import
android.graphics.Typeface;
import
android.graphics.pdf.PdfDocument;
import
android.os.Bundle;
import
android.os.Environment;
import
android.view.View;
import
android.widget.Button;
import
android.widget.Toast;
import
androidx.annotation.NonNull;
import
androidx.appcompat.app.AppCompatActivity;
import
androidx.core.app.ActivityCompat;
import
androidx.core.content.ContextCompat;
import
java.io.File;
import
java.io.FileOutputStream;
import
java.io.IOException;
import
static
android.Manifest.permission.READ_EXTERNAL_STORAGE;
import
static
android.Manifest.permission.WRITE_EXTERNAL_STORAGE;
public
class
MainActivity
extends
AppCompatActivity {
Button generatePDFbtn;
int
pageHeight =
1120
;
int
pagewidth =
792
;
Bitmap bmp, scaledbmp;
private
static
final
int
PERMISSION_REQUEST_CODE =
200
;
@Override
protected
void
onCreate(Bundle savedInstanceState) {
super
.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
generatePDFbtn = findViewById(R.id.idBtnGeneratePDF);
bmp = BitmapFactory.decodeResource(getResources(), R.drawable.gfgimage);
scaledbmp = Bitmap.createScaledBitmap(bmp,
140
,
140
,
false
);
if
(checkPermission()) {
Toast.makeText(
this
,
"Permission Granted"
, Toast.LENGTH_SHORT).show();
}
else
{
requestPermission();
}
generatePDFbtn.setOnClickListener(
new
View.OnClickListener() {
@Override
public
void
onClick(View v) {
generatePDF();
}
});
}
private
void
generatePDF() {
PdfDocument pdfDocument =
new
PdfDocument();
Paint paint =
new
Paint();
Paint title =
new
Paint();
PdfDocument.PageInfo mypageInfo =
new
PdfDocument.PageInfo.Builder(pagewidth, pageHeight,
1
).create();
PdfDocument.Page myPage = pdfDocument.startPage(mypageInfo);
Canvas canvas = myPage.getCanvas();
canvas.drawBitmap(scaledbmp,
56
,
40
, paint);
title.setTypeface(Typeface.create(Typeface.DEFAULT, Typeface.NORMAL));
title.setTextSize(
15
);
title.setColor(ContextCompat.getColor(
this
, R.color.purple_200));
canvas.drawText(
"A portal for IT professionals."
,
209
,
100
, title);
canvas.drawText(
"Geeks for Geeks"
,
209
,
80
, title);
title.setTypeface(Typeface.defaultFromStyle(Typeface.NORMAL));
title.setColor(ContextCompat.getColor(
this
, R.color.purple_200));
title.setTextSize(
15
);
title.setTextAlign(Paint.Align.CENTER);
canvas.drawText(
"This is sample document which we have created."
,
396
,
560
, title);
pdfDocument.finishPage(myPage);
File file =
new
File(Environment.getExternalStorageDirectory(),
"GFG.pdf"
);
try
{
pdfDocument.writeTo(
new
FileOutputStream(file));
Toast.makeText(MainActivity.
this
,
"PDF file generated successfully."
, Toast.LENGTH_SHORT).show();
}
catch
(IOException e) {
e.printStackTrace();
}
pdfDocument.close();
}
private
boolean
checkPermission() {
int
permission1 = ContextCompat.checkSelfPermission(getApplicationContext(), WRITE_EXTERNAL_STORAGE);
int
permission2 = ContextCompat.checkSelfPermission(getApplicationContext(), READ_EXTERNAL_STORAGE);
return
permission1 == PackageManager.PERMISSION_GRANTED && permission2 == PackageManager.PERMISSION_GRANTED;
}
private
void
requestPermission() {
ActivityCompat.requestPermissions(
this
,
new
String[]{WRITE_EXTERNAL_STORAGE, READ_EXTERNAL_STORAGE}, PERMISSION_REQUEST_CODE);
}
@Override
public
void
onRequestPermissionsResult(
int
requestCode,
@NonNull
String[] permissions,
@NonNull
int
[] grantResults) {
if
(requestCode == PERMISSION_REQUEST_CODE) {
if
(grantResults.length >
0
) {
boolean
writeStorage = grantResults[
0
] == PackageManager.PERMISSION_GRANTED;
boolean
readStorage = grantResults[
1
] == PackageManager.PERMISSION_GRANTED;
if
(writeStorage && readStorage) {
Toast.makeText(
this
,
"Permission Granted.."
, Toast.LENGTH_SHORT).show();
}
else
{
Toast.makeText(
this
,
"Permission Denied."
, Toast.LENGTH_SHORT).show();
finish();
}
}
}
}
}