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布局 (可根据自己项目, 增减)

     <RelativeLayout xmlns:android="http://schemas.android.com/apk/res  /android"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:orientation="vertical">
     <RelativeLayout
         android:id="@+id/rl_root"
         style="@style/title_style">
    
         <ImageView
          android:id="@+id/iv_back"
         android:layout_width="wrap_content"
         android:layout_height="match_parent"
         android:layout_centerVertical="true"
         android:paddingLeft="@dimen/value15"
         android:src="@drawable/icon_back" />
    
         <TextView
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_centerInParent="true"
         android:text="资料详情"
         android:textColor="@color/color_white"
         android:textSize="16sp" />
    
     </RelativeLayout>
    
     <RelativeLayout
     android:id="@+id/remote_pdf_root"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:layout_below="@id/rl_root">
    
     <es.voghdev.pdfviewpager.library.PDFViewPager
         android:id="@+id/pdfViewPager"
         android:layout_width="match_parent"
         android:layout_height="match_parent" />
    
     </RelativeLayout>
    
     <ProgressBar
     android:id="@+id/pb_bar"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:layout_centerInParent="true"
     android:layout_gravity="center" />
    
     </RelativeLayout>
    
  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) {
     }
     }
    

希望对大家有所帮助 !

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
以下是两种在Android预览PDF文件的方法: 1. 使用Android PdfViewer库 Android PdfViewer是一个开源库,可以在Android应用中实现PDF文件预览。你可以通过在项目的build.gradle文件中添加依赖来使用该库: ```groovy implementation 'com.github.barteksc:android-pdf-viewer:2.8.2' ``` 然后,在你的Activity中,你可以使用PdfView加载和显示PDF文件: ```java import com.github.barteksc.pdfviewer.PDFView; public class MainActivity extends AppCompatActivity { private PDFView pdfView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); pdfView = findViewById(R.id.pdfView); pdfView.fromAsset("sample.pdf") // 从assets文件加载PDF文件 .load(); } } ``` 在上面的代码中,我们假设你的项目中有一个名为"sample.pdf"的PDF文件放在assets文件夹中。你可以根据实际情况修改文件名和路径。 2. 使用Mozilla的PDF.js库 PDF.js是一个由Mozilla开发的JavaScript库,可以在Web浏览器中预览PDF文件。你可以将PDF.js集成到你的Android应用中,通过WebView加载并显示PDF文件。首先,你需要将PDF.js库文件添加到你的项目中。你可以从GitHub上下载PDF.js库文件,并将其放置在你的项目的assets文件夹中。然后,在你的Activity中,你可以使用WebView加载PDF.js库文件PDF文件: ```java import android.os.Bundle; import android.webkit.WebSettings; import android.webkit.WebView; public class MainActivity extends AppCompatActivity { private WebView webView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); webView = findViewById(R.id.webView); WebSettings webSettings = webView.getSettings(); webSettings.setJavaScriptEnabled(true); webView.loadUrl("file:///android_asset/pdfjs/web/viewer.html?file=sample.pdf"); } } ``` 在上面的代码中,我们假设你将PDF.js库文件放在了assets文件夹的"pdfjs"子文件夹中,并且你的项目中有一个名为"sample.pdf"的PDF文件。你可以根据实际情况修改文件名和路径。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值