Android 在線預(yù)覽PDF文件

需求: 最近公司要求項目中增加資料庫, 能在線查看pdf格式的文件, 且只能查看不能下載 .
在網(wǎng)上找了不少文章, 說實話都不是很理想, 要么需要收費, 要么基本都只支持本地查看, 后來果斷直接在github搜索, 找到了合適的第三方框架 :

Android PdfViewer:
項目地址: https://github.com/barteksc/AndroidPdfViewer
功能很強大, 使用也比較廣, 親測可以使用.
唯一的缺點 :添加到項目中 會使apk增加16M, 這是最不能接受的, 故棄用.

PdfViewPager:
項目地址: https://github.com/voghDev/PdfViewPager
可加載assets/SD卡/URL(在線預(yù)覽) ,(ps: 我目前就是使用的此框架)
優(yōu)點: 使用比較方便, 也不大

使用:

  1. 依賴:

     compile 'es.voghdev.pdfviewpager:library:1.0.3'
    
  2. xml布局 (可根據(jù)自己項目, 增減)

     <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 (注釋很詳細(xì), 慢慢看)

    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();
         }
     });
     }
    
     /*設(shè)置監(jiān)聽*/
     protected void setDownloadListener() {
     final DownloadFile.Listener listener = this;
     remotePDFViewPager = new RemotePDFViewPager(this, mUrl, listener);
     remotePDFViewPager.setId(R.id.pdfViewPager);
     }
    
     /*加載成功調(diào)用*/
     @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);
     }
    
     /*加載失敗調(diào)用*/
     @Override
     public void onFailure(Exception e) {
       pb_bar.setVisibility(View.GONE);
     ToastUitl.show(this, "數(shù)據(jù)加載錯誤");
     }
    
     @Override
     public void onProgressUpdate(int progress, int total) {
     }
     }
    

希望對大家有所幫助 !

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末墨林,一起剝皮案震驚了整個濱河市汇竭,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌征冷,老刑警劉巖扛邑,帶你破解...
    沈念sama閱讀 206,839評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡摊阀,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評論 2 382
  • 文/潘曉璐 我一進(jìn)店門踪蹬,熙熙樓的掌柜王于貴愁眉苦臉地迎上來胞此,“玉大人,你說我怎么就攤上這事跃捣∈#” “怎么了?”我有些...
    開封第一講書人閱讀 153,116評論 0 344
  • 文/不壞的土叔 我叫張陵疚漆,是天一觀的道長酣胀。 經(jīng)常有香客問我,道長娶聘,這世上最難降的妖魔是什么闻镶? 我笑而不...
    開封第一講書人閱讀 55,371評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮丸升,結(jié)果婚禮上铆农,老公的妹妹穿的比我還像新娘。我一直安慰自己狡耻,他們只是感情好墩剖,可當(dāng)我...
    茶點故事閱讀 64,384評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著夷狰,像睡著了一般岭皂。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上沼头,一...
    開封第一講書人閱讀 49,111評論 1 285
  • 那天爷绘,我揣著相機與錄音书劝,去河邊找鬼。 笑死揉阎,一個胖子當(dāng)著我的面吹牛庄撮,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播毙籽,決...
    沈念sama閱讀 38,416評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼洞斯,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了坑赡?” 一聲冷哼從身側(cè)響起烙如,我...
    開封第一講書人閱讀 37,053評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎毅否,沒想到半個月后亚铁,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,558評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡螟加,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,007評論 2 325
  • 正文 我和宋清朗相戀三年徘溢,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片捆探。...
    茶點故事閱讀 38,117評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡然爆,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出黍图,到底是詐尸還是另有隱情曾雕,我是刑警寧澤,帶...
    沈念sama閱讀 33,756評論 4 324
  • 正文 年R本政府宣布助被,位于F島的核電站剖张,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏揩环。R本人自食惡果不足惜搔弄,卻給世界環(huán)境...
    茶點故事閱讀 39,324評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望丰滑。 院中可真熱鬧肯污,春花似錦、人聲如沸吨枉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽貌亭。三九已至,卻和暖如春认臊,著一層夾襖步出監(jiān)牢的瞬間圃庭,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留剧腻,地道東北人拘央。 一個月前我還...
    沈念sama閱讀 45,578評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像书在,于是被迫代替她去往敵國和親灰伟。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,877評論 2 345

推薦閱讀更多精彩內(nèi)容