Kepemilikan proyek baru -baru ini diubah dan kami secara aktif mencari kontributor untuk mengembalikan proyek. Silakan kunjungi
AndroidPDFViewer 1.x tersedia di repo AndroidPDFViewerV1, di mana dapat dikembangkan secara mandiri. Versi 1.x menggunakan mesin yang berbeda untuk menggambar dokumen di kanvas, jadi jika Anda tidak menyukai versi 2.x, coba 1.x.
Perpustakaan untuk menampilkan dokumen PDF di Android, dengan animations
, gestures
, zoom
dan dukungan double tap
. Ini didasarkan pada pdfiumAndroid untuk mendecoding file PDF. Bekerja pada API 11 (Android 3.0) dan lebih tinggi. Lisensi di bawah Lisensi Apache 2.0.
fitEachPage
Contants.PRELOAD_COUNT
yang diganti dengan PRELOAD_OFFSET
PDFView#fitToWidth()
(varian tanpa argumen)Configurator#invalidPageColor(int)
karena halaman tidak valid tidak diterjemahkanOnRenderListener#onInitiallyRendered(int)
Metode, karena dokumen mungkin memiliki ukuran halaman yang berbedaPDFView#setSwipeVertical()
yang dihapus Tambahkan ke build.gradle :
implementation 'com.github.barteksc:android-pdf-viewer:3.2.0-beta.1'
atau jika Anda ingin menggunakan versi yang lebih stabil:
implementation 'com.github.barteksc:android-pdf-viewer:2.8.2'
Perpustakaan tersedia di repositori JCenter, mungkin akan segera berada di Maven Central.
Jika Anda menggunakan proguard, tambahkan aturan berikut ke file konfigurasi proguard:
-keep class com.shockwave.**
< com .github.barteksc.pdfviewer.PDFView
android : id = " @+id/pdfView "
android : layout_width = " match_parent "
android : layout_height = " match_parent " />
Semua opsi yang tersedia dengan nilai default:
pdfView . fromUri ( Uri )
or
pdfView . fromFile ( File )
or
pdfView . fromBytes ( byte [])
or
pdfView . fromStream ( InputStream ) // stream is written to bytearray - native code cannot use Java Streams
or
pdfView . fromSource ( DocumentSource )
or
pdfView . fromAsset ( String )
. pages ( 0 , 2 , 1 , 3 , 3 , 3 ) // all pages are displayed by default
. enableSwipe ( true ) // allows to block changing pages using swipe
. swipeHorizontal ( false )
. enableDoubletap ( true )
. defaultPage ( 0 )
// allows to draw something on the current page, usually visible in the middle of the screen
. onDraw ( onDrawListener )
// allows to draw something on all pages, separately for every page. Called only for visible pages
. onDrawAll ( onDrawListener )
. onLoad ( onLoadCompleteListener ) // called after document is loaded and starts to be rendered
. onPageChange ( onPageChangeListener )
. onPageScroll ( onPageScrollListener )
. onError ( onErrorListener )
. onPageError ( onPageErrorListener )
. onRender ( onRenderListener ) // called after document is rendered for the first time
// called on single tap, return true if handled, false to toggle scroll handle visibility
. onTap ( onTapListener )
. onLongPress ( onLongPressListener )
. enableAnnotationRendering ( false ) // render annotations (such as comments, colors or forms)
. password ( null )
. scrollHandle ( null )
. enableAntialiasing ( true ) // improve rendering a little bit on low-res screens
// spacing between pages in dp. To define spacing color, set view background
. spacing ( 0 )
. autoSpacing ( false ) // add dynamic spacing to fit each page on its own on the screen
. linkHandler ( DefaultLinkHandler )
. pageFitPolicy ( FitPolicy . WIDTH ) // mode to fit pages in the view
. fitEachPage ( false ) // fit each page to the view, else smaller pages are scaled relative to largest page.
. pageSnap ( false ) // snap pages to screen boundaries
. pageFling ( false ) // make a fling change only a single page like ViewPager
. nightMode ( false ) // toggle night mode
. load ();
pages
adalah opsional, memungkinkan Anda untuk menyaring dan memesan halaman PDF sesuai kebutuhan Pegangan gulir adalah penggantian untuk scrollbar dari cabang 1.x.
Dari versi 2.1.0 menempatkan PDFView di Relativelayout untuk menggunakan ScrollHandle tidak diperlukan, Anda dapat menggunakan tata letak apa pun.
Untuk menggunakan pegangan scroll cukup daftarkannya menggunakan Metode Configurator#scrollHandle()
. Metode ini menerima implementasi antarmuka ScrollHandle .
Ada implementasi default yang dikirimkan dengan AndroidPDFViewer, dan Anda dapat menggunakannya dengan .scrollHandle(new DefaultScrollHandle(this))
. DefaultSCrollHandle ditempatkan di sebelah kanan (saat menggulir secara vertikal) atau di bagian bawah (saat menggulir secara horizontal). Dengan menggunakan konstruktor dengan argumen kedua ( new DefaultScrollHandle(this, true)
), pegangan dapat ditempatkan kiri atau atas.
Anda juga dapat membuat pegangan gulir khusus, cukup terapkan antarmuka ScrollHandle . Semua metode didokumentasikan sebagai komentar Javadoc pada sumber antarmuka.
Versi 2.3.0 Sumber dokumen yang diperkenalkan, yang hanya penyedia untuk dokumen PDF. Setiap penyedia mengimplementasikan antarmuka Documentsource . Penyedia yang telah ditentukan tersedia di paket com.github.barteksc.pdfviewer.source dan dapat digunakan sebagai sampel untuk membuat yang kustom.
Penyedia yang telah ditentukan dapat digunakan dengan metode singkatan:
pdfView.fromUri(Uri)
pdfView.fromFile(File)
pdfView.fromBytes(byte[])
pdfView.fromStream(InputStream)
pdfView.fromAsset(String)
Penyedia khusus dapat digunakan dengan metode pdfView.fromSource(DocumentSource)
.
Versi 3.0.0 memperkenalkan dukungan untuk tautan dalam dokumen PDF. Secara default, DefaultLinkHandler digunakan dan mengklik tautan yang referensi halaman dalam dokumen yang sama melompat ke halaman tujuan dan mengklik tautan yang menargetkan beberapa penyebab URI membukanya dalam aplikasi default.
Anda juga dapat membuat penangan tautan khusus, cukup terapkan antarmuka LinkHandler dan mengaturnya menggunakan metode Configurator#linkHandler(LinkHandler)
. Lihatlah sumber DefaultLinkHandler untuk mengimplementasikan perilaku khusus.
Sejak versi 3.0.0, perpustakaan mendukung halaman pemasangan ke layar dalam 3 mode:
Terlepas dari kebijakan yang dipilih, setiap halaman diskalakan untuk memiliki ukuran relatif terhadap halaman lain.
Kebijakan FIT dapat diatur menggunakan Configurator#pageFitPolicy(FitPolicy)
. Kebijakan default adalah lebar .
Secara default, bitmap yang dihasilkan dikompresi dengan format RGB_565
untuk mengurangi konsumsi memori. Rendering dengan ARGB_8888
dapat dipaksa dengan menggunakan metode pdfView.useBestQuality(true)
.
Ada tiga level zoom: min (default 1), mid (default 1.75) dan maks (default 3). Pada keran ganda pertama, View diperbesar ke tingkat menengah, pada tingkat kedua ke max, dan pada pengembalian ketiga ke level min. Jika Anda berada di antara level MID dan MAX, penyadapan ganda menyebabkan memperbesar max dan sebagainya.
Level zoom dapat diubah menggunakan metode berikut:
void setMinZoom ( float zoom );
void setMidZoom ( float zoom );
void setMaxZoom ( float zoom );
Android PDFViewer tergantung pada pdfiumandroid, yang merupakan set perpustakaan asli (hampir 16 MB) untuk banyak arsitektur. APK harus berisi semua pustaka ini untuk dijalankan di setiap perangkat yang tersedia di pasar. Untungnya, Google Play memungkinkan kami untuk mengunggah banyak apks, misalnya satu per setiap arsitektur. Ada artikel bagus tentang pemisahan aplikasi Anda secara otomatis menjadi beberapa apks, tersedia di sini. Bagian yang paling penting adalah meningkatkan beberapa pembuatan APK dan penanganan kode versi dengan pemisahan APK , tetapi seluruh artikel layak dibaca. Anda hanya perlu melakukan ini dalam aplikasi Anda, tidak perlu untuk membayar pdfiumandroid atau lebih.
Mengunduh file adalah proses jangka panjang yang harus menyadari siklus hidup aktivitas, harus mendukung beberapa konfigurasi, pembersihan data dan caching, sehingga membuat modul seperti itu mungkin akan berakhir sebagai perpustakaan baru.
Anda harus menyimpan nomor halaman saat ini dan kemudian mengaturnya dengan pdfView.defaultPage(page)
, lihat aplikasi sampel
Gunakan FitPolicy. Kebijakan FitPolicy.WIDTH
atau tambahkan cuplikan berikut saat Anda ingin menyesuaikan halaman yang diinginkan dalam dokumen dengan ukuran halaman yang berbeda:
Configurator . onRender ( new OnRenderListener () {
@ Override
public void onInitiallyRendered ( int pages , float pageWidth , float pageHeight ) {
pdfView . fitToWidth ( pageIndex );
}
});
Anda dapat menggunakan kombinasi dari pengaturan berikut untuk mendapatkan perilaku gulir dan pelepasan yang mirip dengan viewpager:
. swipeHorizontal ( true )
. pageSnap ( true )
. autoSpacing ( true )
. pageFling ( true )
Jika Anda memiliki saran untuk membuat lib ini lebih baik, tulis saya, buat masalah atau tulis beberapa kode dan kirim permintaan tarik.
Dibuat dengan bantuan Android-PDFView oleh Joan Zapata
Copyright 2017 Bartosz Schiller
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.