Android显示PDF文件之PDFviewer | 您所在的位置:网站首页 › androidpdf开发 › Android显示PDF文件之PDFviewer |
Android显示PDF文件
最近由于项目需要,大致了解了一下关于如何在Android端显示PDF文件的内容,因此在这里进行一下小小的总结,方便今后开发。我目前了解到并成功实现的有三种开源框架分别是:Android PdfViewer、MUpdf以及iText, Android PdfViewer MUpdf iText 其中Android PdfViewer、MUpdf是显示PDF文件中所有文件,而iText则主要是方便用于解析PDF文件中的文本信息,这里主要介绍Android PdfViewer的使用方法: Android PdfViewer的使用方法最是简单,直接添加依赖即可,而且显示效果也相当好,但功能没有MUpdf全面,且解析速度比MUpdf稍稍慢一点点,特别是在解析大文件的时候更加明显,但就普通的PDF文件显示的话还是完全能够胜任的。 GitHub地址:https://github.com/barteksc/AndroidPdfViewer 其实在这个GitHub地址里已经有详细的说明了,不必下载直接添加依赖 compile 'com.github.barteksc:android-pdf-viewer:2.7.0-beta.1'添加完依赖后就可以直接使用了,简直不要太方便,下面是布局文件。 然后是MainActivity里的,记得要.load(): pdfView.fromFile(new File("文件路径")).load();或者按照GitHub里介绍的: 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) .onRender(onRenderListener) // called after document is rendered for the first time .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) .load();记得添加权限: 如果系统是Android6.0版本以上的话不要忘了获取动态权限,附带获取动态权限代码: package www.alphamap.cn.test02; import android.Manifest; import android.app.Activity; import android.content.pm.PackageManager; import android.os.Environment; import android.support.v4.app.ActivityCompat; import android.support.v4.content.ContextCompat; import android.os.Bundle; import android.util.Log; import android.view.View; import com.github.barteksc.pdfviewer.PDFView; import java.io.File; public class MainActivity extends Activity { private PDFView pdfView; private static final int REQUEST_EXTERNAL_STORAGE = 1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //获取动态权限 getPermission(); } public void button(View view){ pdfView = (PDFView) findViewById(R.id.pdfView); pdfView.fromFile(new File(Environment.getExternalStorageDirectory().getAbsolutePath()+"/AlphaMap/58号文.pdf")).load(); } private static String[] PERMISSIONS_STORAGE = { Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE }; /** * 获取动态权限 */ public void getPermission(){ int hasWriteContactsPermission = ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.READ_EXTERNAL_STORAGE); if (hasWriteContactsPermission != PackageManager.PERMISSION_GRANTED) { if (!ActivityCompat.shouldShowRequestPermissionRationale(MainActivity.this, Manifest.permission.READ_EXTERNAL_STORAGE)) { Log.d("yx","get permission"); ActivityCompat.requestPermissions(MainActivity.this, PERMISSIONS_STORAGE,REQUEST_EXTERNAL_STORAGE); } Log.d("yx","get permission2"); ActivityCompat.requestPermissions(MainActivity.this, PERMISSIONS_STORAGE,REQUEST_EXTERNAL_STORAGE); } Log.d("yx","wait for PERMISSION_GRANTED"); while (( ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.READ_EXTERNAL_STORAGE))!= PackageManager.PERMISSION_GRANTED) { } Log.d("yx","wait for PERMISSION_GRANTED finish"); } } |
CopyRight 2018-2019 实验室设备网 版权所有 |