Full tutorial is given below. Dear Viewer we are working hard to maintain this website. We doesn't want any think from you. Its just a humble request If you thinks that this posts helps you please share this post with your friends.
build.gradle(Module:app)
plugins { id 'com.android.application' } android { compileSdkVersion 30 buildToolsVersion "30.0.3" defaultConfig { applicationId "com.usmtip.myapplication" minSdkVersion 18 targetSdkVersion 30 versionCode 1 versionName "1.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } } dependencies { implementation 'androidx.appcompat:appcompat:1.3.1' implementation 'com.google.android.material:material:1.4.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.0' testImplementation 'junit:junit:4.+' androidTestImplementation 'androidx.test.ext:junit:1.1.3' androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0' //write pdf library implementation 'com.itextpdf:itextg:5.5.10' }
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.usmtip.myapplication"> <!--add permission--> <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/Theme.MyApplication"> <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>
activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".MainActivity"> <LinearLayout android:padding="10dp" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <!--EditText: Input text to be saved as pdf file--> <EditText android:id="@+id/textEt" android:hint="Enter text..." android:inputType="text|textMultiLine" android:background="@drawable/ic_launcher_background" android:padding="5dp" android:minHeight="200dp" android:gravity="start" android:layout_width="match_parent" android:layout_height="wrap_content" /> <!--Button: Saves inputted data as pdf file--> <Button android:id="@+id/saveBtn" android:text="Save PDF" android:drawableLeft="@drawable/ic_baseline_save_24" android:gravity="center" android:drawablePadding="5dp" style="@style/Base.Widget.AppCompat.Button.Colored" android:layout_gravity="end" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <Space android:layout_width="match_parent" android:layout_height="20dp"/> </LinearLayout> </ScrollView>
MainActivity.java
package com.usmtip.myapplication;
import android.Manifest;
import android.content.pm.PackageManager;
import android.os.Build;
import android.os.Environment;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import com.itextpdf.text.Document;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.pdf.PdfWriter;
import java.io.FileOutputStream;
import java.text.SimpleDateFormat;
import java.util.Locale;
public class MainActivity extends AppCompatActivity {
private static final int STORAGE_CODE = 1000;
//declaring views
EditText mTextEt;
Button mSaveBtn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//initializing views (activity_main.xml)
mTextEt = findViewById(R.id.textEt);
mSaveBtn = findViewById(R.id.saveBtn);
//handle button click
mSaveBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//we need to handle runtime permission for devices with marshmallow and above
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.M){
//system OS >= Marshmallow(6.0), check if permission is enabled or not
if (checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) ==
PackageManager.PERMISSION_DENIED){
//permission was not granted, request it
String[] permissions = {Manifest.permission.WRITE_EXTERNAL_STORAGE};
requestPermissions(permissions, STORAGE_CODE);
}
else {
//permission already granted, call save pdf method
savePdf();
}
}
else {
//system OS < Marshmallow, call save pdf method
savePdf();
}
}
});
}
private void savePdf() {
//create object of Document class
Document mDoc = new Document();
//pdf file name
String mFileName = new SimpleDateFormat("yyyyMMdd_HHmmss",
Locale.getDefault()).format(System.currentTimeMillis());
//pdf file path
String mFilePath = Environment.getExternalStorageDirectory() + "/" + mFileName + ".pdf";
try {
//create instance of PdfWriter class
PdfWriter.getInstance(mDoc, new FileOutputStream(mFilePath));
//open the document for writing
mDoc.open();
//get text from EditText i.e. mTextEt
String mText = mTextEt.getText().toString();
//add author of the document (optional)
mDoc.addAuthor("usmtip");
//add paragraph to the document
mDoc.add(new Paragraph(mText));
//close the document
mDoc.close();
//show message that file is saved, it will show file name and file path too
Toast.makeText(this, mFileName +".pdf\nis saved to\n"+ mFilePath, Toast.LENGTH_SHORT).show();
}
catch (Exception e){
//if any thing goes wrong causing exception, get and show exception message
Toast.makeText(this, e.getMessage(), Toast.LENGTH_SHORT).show();
}
}
//handle permission result
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
switch (requestCode) {
case STORAGE_CODE: {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
//permission was granted from popup, call savepdf method
savePdf();
} else {
//permission was denied from popup, show error message
Toast.makeText(this, "Permission denied...!", Toast.LENGTH_SHORT).show();
}
}
}
}
}
0 Comments: