Hallo Semua...
Pada kesempatan kali ini saya mau berbagi bagaimana cara membuat aplikasi PDF sendiri mengggunakan android studio, Pada postingan kemaren saya sudah share cara buat web view, dan sekarang ini saya post bagaimana cara buat aplikasi pdf, dalam pembuatan aplikasi pdf ini implementasionnya hampir sama dengan pembuatan web view, jadi bagi teman teman yang pengen coba bisa langsung simak langkah langkah di bawah ....
Baiklah kita langsung ke inti itinya saja lebih cepatnya teman teman membuat aplikasi pdf sendiri menggunakan android studio
Pertama buat project baru NewProject_Next
Lanjut langkah kedua teman teman di arahkan ke Project Name, Terserah teman teman mengenai project name, jadi teman teman sesuaikan aplikasi yang mau di buat.Lanjut_Next
Lanjut langkah selanjutnya teman teman diaraahkan untuk memilih Device API 14, jadi untuk teman teman sesuaian device android kalian atau hp yang suport APInya sesuai device hp yang di gukan teman teman.Lanjut_Next
Lanjut langkah selanjutnya teman teman diarahkan ke untuk memilih layout yang akan kita buat untuk tampilan depan aplikasi, jadi sekaran teman teman pilih layout Empty_Activity.Lanjut_Next
Lanjut Finish
Baik langkah selanjutnya teman teman diarahkan ke Activity_main.xml dan MainActivity.java, jadi teman teman yang pertama diarahkan ke activity_main.xml, dimana teman teman ngelayout atau desain tampilan aplikasi pdf android teman teman.
Kenapa harus ada dua saluran sih untuk membuat aplikasi ???
Baik di android itu ketika buat aplikasi atau project baru itu ada dua saluran Activity_main.xml yang sudah di jelaskan di atas, dan saluran yang kedua MainAktivity.java, dan di MainActivity.java ini saluran yang kedua berfungsi untuk logika aplikasi yang teman teman buat, jadi intinya main aktivity proses berjalannya suatu aplikasi yang dibuat.
Teman teman bisa langsung coba saja untuk buat aplikasi pdfnya saya sudah ngasih tutorial full dan source codenya saya sisipkan di bawah, Teman teman bisa copy+paste heheh x3 :D dibawah ok.
Activity_main.xml
MainActivity.java
pagname sesuaikan punya teman teman jadi detaill codingannya
Gradle
yang harus kita pertama kali compile di Gradle modul app
Manifests
Demo.....
Hanya itu yang saya sampaikan postingan hari ini semoga bermanfaat, akhiron wassalamualaikum....
by.contacpersion 082301067779
Pada kesempatan kali ini saya mau berbagi bagaimana cara membuat aplikasi PDF sendiri mengggunakan android studio, Pada postingan kemaren saya sudah share cara buat web view, dan sekarang ini saya post bagaimana cara buat aplikasi pdf, dalam pembuatan aplikasi pdf ini implementasionnya hampir sama dengan pembuatan web view, jadi bagi teman teman yang pengen coba bisa langsung simak langkah langkah di bawah ....
Baiklah kita langsung ke inti itinya saja lebih cepatnya teman teman membuat aplikasi pdf sendiri menggunakan android studio
Pertama buat project baru NewProject_Next
Lanjut langkah kedua teman teman di arahkan ke Project Name, Terserah teman teman mengenai project name, jadi teman teman sesuaikan aplikasi yang mau di buat.Lanjut_Next
Lanjut langkah selanjutnya teman teman diaraahkan untuk memilih Device API 14, jadi untuk teman teman sesuaian device android kalian atau hp yang suport APInya sesuai device hp yang di gukan teman teman.Lanjut_Next
Lanjut langkah selanjutnya teman teman diarahkan ke untuk memilih layout yang akan kita buat untuk tampilan depan aplikasi, jadi sekaran teman teman pilih layout Empty_Activity.Lanjut_Next
Lanjut Finish
Baik langkah selanjutnya teman teman diarahkan ke Activity_main.xml dan MainActivity.java, jadi teman teman yang pertama diarahkan ke activity_main.xml, dimana teman teman ngelayout atau desain tampilan aplikasi pdf android teman teman.
Kenapa harus ada dua saluran sih untuk membuat aplikasi ???
Baik di android itu ketika buat aplikasi atau project baru itu ada dua saluran Activity_main.xml yang sudah di jelaskan di atas, dan saluran yang kedua MainAktivity.java, dan di MainActivity.java ini saluran yang kedua berfungsi untuk logika aplikasi yang teman teman buat, jadi intinya main aktivity proses berjalannya suatu aplikasi yang dibuat.
Teman teman bisa langsung coba saja untuk buat aplikasi pdfnya saya sudah ngasih tutorial full dan source codenya saya sisipkan di bawah, Teman teman bisa copy+paste heheh x3 :D dibawah ok.
Activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
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"
tools:context=".MainActivity">
<Button
android:id="@+id/openpdf"
android:text="Open PDF Me"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<com.github.barteksc.pdfviewer.PDFView
android:id="@+id/pdfView"
android:background="@drawable/cdr"
android:layout_below="@+id/openpdf"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</RelativeLayout>
<RelativeLayout
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"
tools:context=".MainActivity">
<Button
android:id="@+id/openpdf"
android:text="Open PDF Me"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<com.github.barteksc.pdfviewer.PDFView
android:id="@+id/pdfView"
android:background="@drawable/cdr"
android:layout_below="@+id/openpdf"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</RelativeLayout>
MainActivity.java
pagname sesuaikan punya teman teman jadi detaill codingannya
//package g.danytux.carapasangiklan;
import android.content.ActivityNotFoundException;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.database.Cursor;
import android.graphics.Color;
import android.net.Uri;
import android.os.Bundle;
import android.provider.OpenableColumns;
import android.support.annotation.NonNull;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
import com.github.barteksc.pdfviewer.PDFView;
import com.github.barteksc.pdfviewer.listener.OnLoadCompleteListener;
import com.github.barteksc.pdfviewer.listener.OnPageChangeListener;
import com.github.barteksc.pdfviewer.scroll.DefaultScrollHandle;
import com.shockwave.pdfium.PdfDocument;
import java.util.List;
public class MainActivity extends AppCompatActivity implements OnPageChangeListener, OnLoadCompleteListener {
private static final String TAG = MainActivity.class.getSimpleName();
private final static int REQUEST_CODE = 42;
public static final int PERMISSION_CODE = 42042;
public static final String SAMPLE_FILE = "sample.pdf";
public static final String READ_EXTERNAL_STORAGE = "android.permission.READ_EXTERNAL_STORAGE";
private PDFView pdfView;
private Button openPdf;
private Uri uri;
private Integer pageNumber = 0;
private String pdfFileName;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
pdfView = (PDFView) findViewById(R.id.pdfView);
openPdf = (Button) findViewById(R.id.openpdf);
openPdf.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent fileIntent = new Intent();
fileIntent.setType("application/pdf")
.setAction(Intent.ACTION_GET_CONTENT);
int permissionCheck = ContextCompat.checkSelfPermission(ebookActivity.this, READ_EXTERNAL_STORAGE);
if (permissionCheck != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(
ebookActivity.this,
new String[]{READ_EXTERNAL_STORAGE},
PERMISSION_CODE
);
return;
}
startActivityForResult(Intent.createChooser(fileIntent, "SELECT PDF"), REQUEST_CODE);
}
});
}
void afterViews() {
pdfView.setBackgroundColor(Color.LTGRAY);
if (uri != null) {
displayFromUri(uri);
} else {
displayFromAsset(SAMPLE_FILE);
}
setTitle(pdfFileName);
}
private void displayFromAsset(String assetFileName) {
pdfFileName = assetFileName;
pdfView.fromAsset(SAMPLE_FILE)
.defaultPage(pageNumber)
.onPageChange(this)
.enableAnnotationRendering(true)
.onLoad(this)
.scrollHandle(new DefaultScrollHandle(this))
.spacing(10) // in dp
.load();
}
private void displayFromUri(Uri uri) {
pdfFileName = getFileName(uri);
pdfView.fromUri(uri)
.defaultPage(pageNumber)
.onPageChange(this)
.enableAnnotationRendering(true)
.onLoad(this)
.scrollHandle(new DefaultScrollHandle(this))
.spacing(10) // in dp
.load();
}
private String getFileName(Uri uri) {
String result = null;
if (uri.getScheme().equals("content")) {
Cursor cursor = getContentResolver().query(uri, null, null, null, null);
try {
if (cursor != null && cursor.moveToFirst()) {
result = cursor.getString(cursor.getColumnIndex(OpenableColumns.DISPLAY_NAME));
}
} finally {
if (cursor != null) {
cursor.close();
}
}
}
if (result == null) {
result = uri.getLastPathSegment();
}
return result;
}
@Override
public void loadComplete(int nbPages) {
PdfDocument.Meta meta = pdfView.getDocumentMeta();
Log.e(TAG, "title = " + meta.getTitle());
Log.e(TAG, "author = " + meta.getAuthor());
Log.e(TAG, "subject = " + meta.getSubject());
Log.e(TAG, "keywords = " + meta.getKeywords());
Log.e(TAG, "creator = " + meta.getCreator());
Log.e(TAG, "producer = " + meta.getProducer());
Log.e(TAG, "creationDate = " + meta.getCreationDate());
Log.e(TAG, "modDate = " + meta.getModDate());
printBookmarksTree(pdfView.getTableOfContents(), "-");
}
private void printBookmarksTree(List<PdfDocument.Bookmark> tree, String sep) {
for (PdfDocument.Bookmark b : tree) {
Log.e(TAG, String.format("%s %s, p %d", sep, b.getTitle(), b.getPageIdx()));
if (b.hasChildren()) {
printBookmarksTree(b.getChildren(), sep + "-");
}
}
}
@Override
public void onPageChanged(int page, int pageCount) {
pageNumber = page;
setTitle(String.format("%s %s / %s", pdfFileName, page + 1, pageCount));
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_CODE && resultCode == RESULT_OK) {
uri = data.getData();
displayFromUri(uri);
}
}
}
import android.content.ActivityNotFoundException;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.database.Cursor;
import android.graphics.Color;
import android.net.Uri;
import android.os.Bundle;
import android.provider.OpenableColumns;
import android.support.annotation.NonNull;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
import com.github.barteksc.pdfviewer.PDFView;
import com.github.barteksc.pdfviewer.listener.OnLoadCompleteListener;
import com.github.barteksc.pdfviewer.listener.OnPageChangeListener;
import com.github.barteksc.pdfviewer.scroll.DefaultScrollHandle;
import com.shockwave.pdfium.PdfDocument;
import java.util.List;
public class MainActivity extends AppCompatActivity implements OnPageChangeListener, OnLoadCompleteListener {
private static final String TAG = MainActivity.class.getSimpleName();
private final static int REQUEST_CODE = 42;
public static final int PERMISSION_CODE = 42042;
public static final String SAMPLE_FILE = "sample.pdf";
public static final String READ_EXTERNAL_STORAGE = "android.permission.READ_EXTERNAL_STORAGE";
private PDFView pdfView;
private Button openPdf;
private Uri uri;
private Integer pageNumber = 0;
private String pdfFileName;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
pdfView = (PDFView) findViewById(R.id.pdfView);
openPdf = (Button) findViewById(R.id.openpdf);
openPdf.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent fileIntent = new Intent();
fileIntent.setType("application/pdf")
.setAction(Intent.ACTION_GET_CONTENT);
int permissionCheck = ContextCompat.checkSelfPermission(ebookActivity.this, READ_EXTERNAL_STORAGE);
if (permissionCheck != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(
ebookActivity.this,
new String[]{READ_EXTERNAL_STORAGE},
PERMISSION_CODE
);
return;
}
startActivityForResult(Intent.createChooser(fileIntent, "SELECT PDF"), REQUEST_CODE);
}
});
}
void afterViews() {
pdfView.setBackgroundColor(Color.LTGRAY);
if (uri != null) {
displayFromUri(uri);
} else {
displayFromAsset(SAMPLE_FILE);
}
setTitle(pdfFileName);
}
private void displayFromAsset(String assetFileName) {
pdfFileName = assetFileName;
pdfView.fromAsset(SAMPLE_FILE)
.defaultPage(pageNumber)
.onPageChange(this)
.enableAnnotationRendering(true)
.onLoad(this)
.scrollHandle(new DefaultScrollHandle(this))
.spacing(10) // in dp
.load();
}
private void displayFromUri(Uri uri) {
pdfFileName = getFileName(uri);
pdfView.fromUri(uri)
.defaultPage(pageNumber)
.onPageChange(this)
.enableAnnotationRendering(true)
.onLoad(this)
.scrollHandle(new DefaultScrollHandle(this))
.spacing(10) // in dp
.load();
}
private String getFileName(Uri uri) {
String result = null;
if (uri.getScheme().equals("content")) {
Cursor cursor = getContentResolver().query(uri, null, null, null, null);
try {
if (cursor != null && cursor.moveToFirst()) {
result = cursor.getString(cursor.getColumnIndex(OpenableColumns.DISPLAY_NAME));
}
} finally {
if (cursor != null) {
cursor.close();
}
}
}
if (result == null) {
result = uri.getLastPathSegment();
}
return result;
}
@Override
public void loadComplete(int nbPages) {
PdfDocument.Meta meta = pdfView.getDocumentMeta();
Log.e(TAG, "title = " + meta.getTitle());
Log.e(TAG, "author = " + meta.getAuthor());
Log.e(TAG, "subject = " + meta.getSubject());
Log.e(TAG, "keywords = " + meta.getKeywords());
Log.e(TAG, "creator = " + meta.getCreator());
Log.e(TAG, "producer = " + meta.getProducer());
Log.e(TAG, "creationDate = " + meta.getCreationDate());
Log.e(TAG, "modDate = " + meta.getModDate());
printBookmarksTree(pdfView.getTableOfContents(), "-");
}
private void printBookmarksTree(List<PdfDocument.Bookmark> tree, String sep) {
for (PdfDocument.Bookmark b : tree) {
Log.e(TAG, String.format("%s %s, p %d", sep, b.getTitle(), b.getPageIdx()));
if (b.hasChildren()) {
printBookmarksTree(b.getChildren(), sep + "-");
}
}
}
@Override
public void onPageChanged(int page, int pageCount) {
pageNumber = page;
setTitle(String.format("%s %s / %s", pdfFileName, page + 1, pageCount));
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_CODE && resultCode == RESULT_OK) {
uri = data.getData();
displayFromUri(uri);
}
}
}
Gradle
yang harus kita pertama kali compile di Gradle modul app
implementation 'com.github.barteksc:android-pdf-viewer:2.7.0'
Manifests
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
Demo.....
Hanya itu yang saya sampaikan postingan hari ini semoga bermanfaat, akhiron wassalamualaikum....
by.contacpersion 082301067779
Post a Comment