Android PDF 的 读取 与 生成

本文授权发布公众号【刘桂林】,星球【Hi Android】

Android 上 PDF 的读取 与 生成 , 一个小功能点,操作的也是File对象,这里涉及到IO操作,所以读写权限自行处理,我们先来看下读取PDF的几种方式:

读取
读取的话,搜了一圈的资料,大概是如下几种

1.PdfRenderer加载,最原始的方式
2.Pdf.js ,WebView加载
3.第三方PDF库加载,如PDFView等

我们来介绍一下,首先是PdfRenderer,这种方式会把PDF分割成若干的图片,我们来看示例代码:

这段代码很好理解,首先创建一个PDF路径的File文件,然后通过ParcelFileDescriptor.open
这个文件后得到ParcelFileDescriptor对象就可以用来传入PdfRenderer中初始化了,我们可以通过PdfRenderer的openPage去拿到各页面然后创建Bitmap。所以最后显示的效果如图:

好了我们再来看下PDF.js是怎么读取的

http://mozilla.github.io/pdf.js/getting_started/

首先通过此链接下载最新的pdf.js代码全部拷贝到assets目录下:

可以看到我们的目录如下:

然后通过

mWebView.loadUrl("file:///android_asset/pdfjs/web/viewer.html?file=" + url);

的方式来读取,此方式我没有测试过

接着来看下我们的第三方库如何去使用,这里要再次说明下,很多人不喜欢用这些库是因为这些库会使我们的安装包体积变大,我们先来看第一个库:AndroidPdfViewer

http://github.com/barteksc/AndroidPdfViewer

毕竟是框架,使用起来比较简单:

直接加File之后调用Load即可,我们再来看下PDFView

https://github.com/JoanZapata/android-pdfview

引入之后用法和AndroidPdfViewer是一样的,其他的就不介绍的,抛砖引玉就好

生成
生成PDF会有些麻烦,这里介绍两种方式,一种Android原生,一种第三方库的方式,先来看android原生的方式:

这种原生的方式可操作性强,但是比较麻烦,我们来看代码,这里我初始化了一个PdfDocument后通过PageInfo.Builder创建页面信息,然后调用startPage开始撰写,我直接将当前页的canvas给到了pdf,接着调用finishPage来结束这一页的撰写,你也可以继续创建int来填充页数,然后我writeTo一个output中,到此,PDF就生成成功了。

至于第三方的库,这里说一下弊端:

  • IText 中文有乱码,部分错误
  • pdfbox 不支持中文
  • mupdf 算是比较中肯吧 就是写入太麻烦了
    大致就是如此,且行且珍惜,相关代码可以在源码中阅读。

有兴趣可以加入我的星球:Hi Android , 里面可都是我手撸的新鲜文章,高质量你值得拥有!

进入星球你可以做什么?

1.我的所有视频可以观看
2.发布提问贴可以得到满意的答案
3.可指定我写你感兴趣的技术文章
4.初学者可配套视频辅导
5.有机会线下交流聚会
在这里插入图片描述

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刘某人程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值