开源 Android pdf 阅读器开发总结

原创
2011/05/18 20:22
阅读数 2.1W

        前段时间项目涉及到pdf阅读,因此我开始找了些源码阅读比较,现在贴出各实现方案的对比。希望对大家有帮助。方便大家的阅读,我将自己认为最好的排在最前。

            Vudroid

        Google codehttp://code.google.com/p/vudroid/

        这是一款可以阅读pdfdjvu格式文本的阅读器。按道理说我使用这个给自己带来一定的麻烦,因为我自己需要剥离pdf部分,因为作者底层用的ndk开发,我还得重新编译so库。但是,在我找到的所有源代码中,此作品是最顺畅的,我不能割舍。如果大家想要快速使用而不想剥离pdf部分,可以使用我的google codehttp://code-ernest.googlecode.com/svn/trunk/DocumentViewer

                droidReader

            Google code: http://code.google.com/p/droidreader/

            其采用native libraryVudroid一样:MuPDF

            但是它的缺点是,实现上比Vudroid少了那么点顺畅性,在zoom这一点上要输Vudroid,其他方面都很棒。

            apv

         Google codehttp://code.google.com/p/apv/

        其采用native libraryVudroid一样:MuPDF

        理论上来说应该和Vudroid不太差,它的问题是刷新比Vudroid要慢那么一点,没有多点触控。但是,有一点必须说的是:Vudroid读取文本格式的超强,我给过20M的文字版的pdf测试过,vudroid都能顺畅阅读,Vudroid读取扫描版的或者里面有图片的要差一点,速度稍慢;而apv读取扫描版的则顺畅一点,50M的扫描版也没有问题,但是,20M的文字版pdf它不能读,我没有深究什么原因,大家有兴趣的可以发现下,望指教:ernest.he2009@gmail.com

                apdfviewer

            Google code: http://code.google.com/p/apdfviewer/

        代码最少,整页加载模式中最快的一款,当然,快,就意味着有可能是ndk开发,不错它就是ndk的产物,有兴趣的可以使用。注意:大文件读取有点慢,我以为它死了。这一点上最好的是Vudroid

 

        另外还有一款是基于Sunpdf解析库的,纯java,唯一一款纯java的。但是,它的致命之处是,他读不了大文件。Oh no。可以从eoeAndroid论坛获取。

 

        还有许多你可以从Google code上获取到许多类似的。如果你有更好的发现,联系我:ernest.he2009@gmail.com

展开阅读全文
打赏
2
30 收藏
分享
加载中
http://blog.csdn.net/itworkermk/article/details/51204286
2016/12/30 11:59
回复
举报
链接访问不了,可以麻烦发到邮箱吗?2213330586@qq.com
2016/07/19 09:20
回复
举报

引用来自“穿裤衩闯天下”的评论

楼主,我使用你的google code 当读取10M大小的pdf时会出错,直接强制退出,不论是扫描版还是文字版,都不行!?不过也没有报内存溢出错误:
FATAL EXCEPTION: main
   java.lang.RuntimeException: error loading page
     at org.vudroid.pdfdroid.codec.PdfPage.open(Native Method)
     at org.vudroid.pdfdroid.codec.PdfPage.createPage(PdfPage.java:55)
     at org.vudroid.pdfdroid.codec.PdfDocument.getPage(PdfDocument.java:18)
     at org.vudroid.document.DecodeServiceBase.getPage(DecodeServiceBase.java:158)
     at org.vudroid.document.DecodeServiceBase.getEffectivePagesWidth(DecodeServiceBase.java:181)
     at org.vudroid.document.DocumentView.init(DocumentView.java:68)
     at org.vudroid.document.DocumentView.access$2(DocumentView.java:64)
     at org.vudroid.document.DocumentView$3.run(DocumentView.java:120)
     at android.os.Handler.handleCallback(Handler.java)
     at android.os.Handler.dispatchMessage(Handler.java)
     at android.os.Looper.loop(Looper.java)
     at android.app.ActivityThread.main(ActivityThread.java)
     at java.lang.reflect.Method.invokeNative(Native Method)
     at java.lang.reflect.Method.invoke(Method.java:511)
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java)
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java)
     at dalvik.system.NativeStart.main(Native Method)
你这个问题解决了吗?我用https://github.com/JoanZapata/android-pdfview 也报同样的错误,是Native Method的问题,如果解决了请告诉我谢谢762713299@qq.com
2015/08/14 16:07
回复
举报
为什么有的pdf文件 某些页数打不开呢? 还有打开的速度好慢啊,怎么优化呢
2014/05/06 09:32
回复
举报
楼主,我使用你的google code 当读取10M大小的pdf时会出错,直接强制退出,不论是扫描版还是文字版,都不行!?不过也没有报内存溢出错误:
FATAL EXCEPTION: main
   java.lang.RuntimeException: error loading page
     at org.vudroid.pdfdroid.codec.PdfPage.open(Native Method)
     at org.vudroid.pdfdroid.codec.PdfPage.createPage(PdfPage.java:55)
     at org.vudroid.pdfdroid.codec.PdfDocument.getPage(PdfDocument.java:18)
     at org.vudroid.document.DecodeServiceBase.getPage(DecodeServiceBase.java:158)
     at org.vudroid.document.DecodeServiceBase.getEffectivePagesWidth(DecodeServiceBase.java:181)
     at org.vudroid.document.DocumentView.init(DocumentView.java:68)
     at org.vudroid.document.DocumentView.access$2(DocumentView.java:64)
     at org.vudroid.document.DocumentView$3.run(DocumentView.java:120)
     at android.os.Handler.handleCallback(Handler.java)
     at android.os.Handler.dispatchMessage(Handler.java)
     at android.os.Looper.loop(Looper.java)
     at android.app.ActivityThread.main(ActivityThread.java)
     at java.lang.reflect.Method.invokeNative(Native Method)
     at java.lang.reflect.Method.invoke(Method.java:511)
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java)
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java)
     at dalvik.system.NativeStart.main(Native Method)
2013/05/31 11:06
回复
举报

引用来自“android菜鸟_F”的评论

引用来自“正仔”的评论

mark一下,正需要解析pdf文档!

你好,请问你解析pdf解决了没啊?能不能分享一下!谢谢啦!

我也是刚开始弄这个,还没找到解决办法呢,不过有好多都说是用apache的pdfbox,但是就没有人共享demo!还不知道怎么解决呢!
2013/05/07 16:49
回复
举报

引用来自“正仔”的评论

mark一下,正需要解析pdf文档!

你好,请问你解析pdf解决了没啊?能不能分享一下!谢谢啦!
2013/05/03 20:22
回复
举报
mark一下,正需要解析pdf文档!
2013/05/03 14:49
回复
举报

引用来自“lianwanfei”的评论

我这边用的时候要10秒多才能显示一页,请问你那边多快的?是不是我哪里错了?

你是用的楼主的代码吗?我的怎么不能显示呢?
2013/04/22 11:00
回复
举报
我这边用的时候要10秒多才能显示一页,请问你那边多快的?是不是我哪里错了?
2013/04/22 10:11
回复
举报
更多评论
打赏
68 评论
30 收藏
2
分享
返回顶部
顶部