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文件预览的总结.

更多相关文章

  1. Android4.1.1下关于采用File.createTempFile创建的临时文件存放
  2. xamarin开发Android程序示例
  3. Android开发笔记(二十三)文件对话框FileDialog
  4. 升级android Sdk出现 SDK Manager failed to insatll错误
  5. Android学习笔记之反编译工具介绍及下载(Class文件反编译,xml文件
  6. 记Android(安卓)Studio自定义属性访问不了的问题
  7. Android实现微信和QQ“在其他应用打开”列表中添加自己的应用,并
  8. 查看android 签名文件的有效期限
  9. android的Spinner控件的自定义样式设置以及ArrayAdapter的使用

随机推荐

  1. android:inputType参数类型说明
  2. Android学习笔记(九):Activity-RelativeLayo
  3. Android应用开发——系统自带样式Android
  4. 【Android】系统自带的主题与样式(theme
  5. Android(安卓)Tabhost置于底部
  6. android中自带的主题(theme)的集
  7. android系统自带的主题与样式(theme and
  8. Android的设计模式-外观模式
  9. android:ellipsize的用法以及跑马灯实现
  10. Android的设计模式-适配器模式