android pdf

Android端读取pdf文件:
1.使用google提供的服务,在你的pdf文件的前面加上一段url,例如:
你的pdf的地址:http://www.***.com/demo.pdf,那么 如果使用google提供的服务,则是:http //docs google com/gviewembedded=true&url=+"你的pdf的地址"

原理(猜想):google 可能是将pdf文件转换成了图片的形式展现出来.

缺点:google服务在国内无法被访问到,需要.

2.使用系统提供的浏览器打开,某一些浏览器提供了在线解码预览的效果,个人比较常用的是QQ浏览器,可以在线解码并预览pdf,word,excel等等.
Intent intent = new Intent("android.intent.action.VIEW");
        intent.addCategory("android.intent.category.DEFAULT");
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        Uri uri = Uri.fromFile(new File(path));
        intent.setDataAndType(uri, "application/pdf");
startActivity(intent);

缺点: 如果手机上没有安装可以打开pdf文件的浏览器,仍然无法实现在线预览.

3.使用第三方开源的控件
1).AndroidPdfViewer
github地址:https://github.com/barteksc/AndroidPdfViewer
实例:
pdfView.fromUri(Uri)
or
pdfView.fromFile(File)
or
pdfView.fromAsset(String)
.pages(0, 2, 1, 3, 3, 3) // all pages are displayed by default
.enableSwipe(true)
.swipeHorizontal(false)
.enableDoubletap(true)
.defaultPage(0)
.onDraw(onDrawListener)
.onLoad(onLoadCompleteListener)
.onPageChange(onPageChangeListener)
.onPageScroll(onPageScrollListener)
.onError(onErrorListener)
.enableAnnotationRendering(false)
.password(null)
.scrollHandle(null)
.load();
其中:
enableSwipe 是可选的,它可以让你改变阻止使用刷卡页面 
pages 是可选的,它可以让你筛选并定向PDF的页面,看你需要 
onDraw 也是可选的,并允许你画的东西提供的画布上,在当前页面上方

缺点:集成后,包的大小会有特别明显的增大.

优点:可以兼容到api11,并且兼容不同格式生成的pdf文件.

2).android-pdfview
github地址:https://github.com/JoanZapata/android-pdfview
实例:
pdfView.fromAsset(pdfName)
.pages(0, 2, 1, 3, 3, 3)
.defaultPage(1)
.showMinimap(false)
.enableSwipe(true)
.onDraw(onDrawListener)
.onLoad(onLoadCompleteListener)
.onPageChange(onPageChangeListener)
.load();
其中:
pages和onDraw是可选项,
pages:它可以让你过滤和你需要的PDF页面顺序,
onDraw:允许您在当前页面画布上画上一个的东西

优点:兼容到api18,支持多种格式加载

缺点:不同格式生成的pdf的支持兼容性差一些.


3).PdfViewPager
github地址:https://github.com/voghDev/PdfViewPager
实例:
public class RemotePDFActivity extends AppCompatActivity implements DownloadFile.Listener {


public void initPdfView(){
  RemotePDFViewPager remotePDFViewPager =
 new RemotePDFViewPager(context, "http://partners.adobe.com/public/developer/en/xml/AdobeXMLFormsSamples.pdf", this);
}
@Override
public void onSuccess(String url, String destinationPath) {
// That's the positive case. PDF Download went fine


adapter = new PDFPagerAdapter(this, "AdobeXMLFormsSamples.pdf");
remotePDFViewPager.setAdapter(adapter);
setContentView(remotePDFViewPager);
}


@Override
public void onFailure(Exception e) {
// This will be called if download fails
}


@Override
public void onProgressUpdate(int progress, int total) {
// You will get download progress here
// Always on UI Thread so feel free to update your views here
}
@Override
protected void onDestroy() {
super.onDestroy();


adapter.close();
}
}

优点:支持多种格式:网络,本地等,

缺点:仅兼容到api21,不支持一下.


4.这种解决方式需要前端开发人员的支持:(工作的重点已经不在app端了.)
使用firefox开源的pdf.js
由前端人员和后端人员合作,提供url给app端,通过浏览器或者webView来展示pdf文件.
github地址:https://github.com/mozilla/pdf.js/
可以下载下来,在pc端,简单搭建一个服务器环境测试一下.


以上是这一段接触pdf文件预览的总结.

你可能感兴趣的:(android)