Android 在线预览PDF文件

需求: 最近公司要求项目中增加资料库, 能在线查看pdf格式的文件, 且只能查看不能下载 .
在网上找了不少文章, 说实话都不是很理想, 要么需要收费, 要么基本都只支持本地查看, 后来果断直接在github搜索, 找到了合适的第三方框架 :

Android PdfViewer:
项目地址: https://github.com/barteksc/AndroidPdfViewer
功能很强大, 使用也比较广, 亲测可以使用.
唯一的缺点 :添加到项目中 会使apk增加16M, 这是最不能接受的, 故弃用.

PdfViewPager:
项目地址: https://github.com/voghDev/PdfViewPager
可加载assets/SD卡/URL(在线预览) ,(ps: 我目前就是使用的此框架)
优点: 使用比较方便, 也不大

使用:

  1. 依赖:

     compile 'es.voghdev.pdfviewpager:library:1.0.3'
    
  2. xml布局 (可根据自己项目, 增减)

     
     
    
         
    
         
    
     
    
     
    
     
    
     
    
     
    
     
    
  3. activity (注释很详细, 慢慢看)

    public class PDFDatabaseActivity extends BaseActivity implements     DownloadFile.Listener {
    
     private RelativeLayout pdf_root;
     private ProgressBar pb_bar;
     private RemotePDFViewPager remotePDFViewPager;
     private String mUrl = "http://partners.adobe.com/public/developer/en/xml/AdobeXMLFormsSamples.pdf";
     private PDFPagerAdapter adapter;
     private ImageView iv_back;
    
     @Override
     protected void onCreate(@Nullable Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.activity_database);
     initView();
    
     setDownloadListener();
     }
    
     protected void initView() {
     pdf_root = (RelativeLayout) findViewById(R.id.remote_pdf_root);
     pb_bar = (ProgressBar) findViewById(R.id.pb_bar);
     iv_back = (ImageView) findViewById(R.id.iv_back);
     iv_back.setOnClickListener(new View.OnClickListener() {
         @Override
         public void onClick(View v) {
             finish();
         }
     });
     }
    
     /*设置监听*/
     protected void setDownloadListener() {
     final DownloadFile.Listener listener = this;
     remotePDFViewPager = new RemotePDFViewPager(this, mUrl, listener);
     remotePDFViewPager.setId(R.id.pdfViewPager);
     }
    
     /*加载成功调用*/
     @Override
     public void onSuccess(String url, String destinationPath) {
     pb_bar.setVisibility(View.GONE);
     adapter = new PDFPagerAdapter(this, FileUtil.extractFileNameFromURL(url));
     remotePDFViewPager.setAdapter(adapter);
     updateLayout();
     }
    
     /*更新视图*/
     private void updateLayout() {
     pdf_root.removeAllViewsInLayout();
     pdf_root.addView(remotePDFViewPager, LinearLayout.LayoutParams.MATCH_PARENT,
             LinearLayout.LayoutParams.WRAP_CONTENT);
     }
    
     /*加载失败调用*/
     @Override
     public void onFailure(Exception e) {
       pb_bar.setVisibility(View.GONE);
     ToastUitl.show(this, "数据加载错误");
     }
    
     @Override
     public void onProgressUpdate(int progress, int total) {
     }
     }
    

希望对大家有所帮助 !

你可能感兴趣的:(Android 在线预览PDF文件)