制作安卓PDF阅读器:三、实现文本选择
我为什么要开启这个系列,努力试着从源头开始,用 PDFium 制作一款阅读器?有人喜欢问这个做了有什么用,这个是唯一的吗?
当然不是唯一的,底层技术更不是我的。不过我认为在维护者的推动下,PDFium 越来越完善,功能越来越多,不 真正 拿来做些什么实在是可惜了。另一个重要原因则是,其他APP要么臃肿或者简陋,要么用着磕手、滑动卡顿、误触频发,而且大多还不免费。( 更正,近年来倒是多了好多免费的PDF阅读器 )
目标期望:
热身运动:当检测到单击( GestureDetector )时,若点击处存在超链接,则打印出超链接的对象。
头文件:fpdf_doc.h
需要将屏幕坐标转换为页面坐标,然后再次在native层转换为所谓的user space、page space。别问我那是啥我也不知道。不过在论坛提问后,有人替我指出了相关文档所在,有时间去看看!
屏幕坐标:[event.getX(), event.getY()]
页面坐标:先前提过将整本PDF当作一张超级大图,subsampling-scale-imageview 有一系列的 viewToSource 坐标转换方法。屏幕转换得到 source 坐标后,减去点击页面的左上角坐标,就是页面坐标。
原始页面坐标需用 FPDF_DeviceToPage 再次转换,才能传给FPDFlink_GetlinkAtPoint,获取坐标处的链接指针。
超链接对象统一返回字符串,可以是Uri地址,也可以是页码 @页码 。
热身运动2:在单击处获取一个英文单词或者汉语词组,需要用到安卓的 BreakIterator。
头文件:fpdf_text.h
首先实现 nativeGetCharIndexAtCoord 方法,获取单击附近的文字索引,需进行同样的坐标转换。
若返回的文字index大于等于零,则此 index 指向该页面全部文本当中的一个字符。全部文本用 FPDFText_GetText 获取(实现 nativeGetText):
接下来就可以用 BreakIterator 分词了:
与绘制PDF本身差不多,不过 bitmap 换成 rect 而已。用到的API依次是FPDFText_CountRects、FPDFText_GetRect。
直接将选框覆盖绘制在前。若要绘制在后面的背景上,就需要三层透明视图了,那么加载铺块和缩略图的时候就要用透明色清空 bitmap,页面的白色背景等也需要另外绘制(Google PDF Viewer应该就是这样,还给背景加了阴影)。这些较为复杂,到时候再说。
有个问题可能需要解决:同一行的选框,部分没有合并。
都是小事儿,暂时不在这上面花时间。
之前做过类似的事情,将普通 TextView 自带的文本选择功能***用了,然后用API自己做出一个来,包括单击选词,长按托选,放大镜等等。所以相关的内容还是熟悉的。
绘制 Selection Handle 可以用 AppCompat 支持库中的图标资源:
控点的触控操作也很简单,在 Action_Down 中检测落点是否在其中一个 handle 内。若是,则在 Action_Move 中一边移动该 handle,一边检测新的字符索引,作为文本选择的新边界。
由于PDF的复杂性,页面上的字符索引可能间杂排列,比如头一段开头是100,下一段开头50,再下一段150。这就造成先前简单的选择系统“失效”了:
没什么解决方案,API 就这么点。而且,静读天下、Google PDF 查看器都是这样的,唯有 ezpdfreader 没有这个问题。
安卓系统下,哪款pdf阅读器***用
推荐17PDF阅读器,在它还叫PDF Reader时,我就开始用它了。绝对能称得上安卓***用的PDF阅读器,甩福昕,迅捷好几条街。
光说界面就比其他几个好看,而且使用起来也很方便没有广告。平时用了看看PDF电子书,看论***笔记。还能扫描文档,有时候连打印店都不需要跑了,直接拍照上传。对于学生狗来说,英文文献的翻译是个大问题,但是这款软件支持转档功能,深得我心。下一个软件就够了,完全不用下那么多软件在手机上。
马上不是双十二了,看到微博有推送说双十二会员有超低折扣,有转档需求的小伙伴可以了解一下啦。
安卓手机pdf阅读器哪个好用
安卓手机pdf阅读器哪个好用?当您想增强PDF阅读体验时,一个好的PDF阅读器会非常方便,但是借助具有高级功能的正确软件,您可以做更多的事情。市场上有许多高效的PDF阅读器,要找到最可靠的PDF阅读器并不容易,但我很高兴地为您提供一些可在iPad上使用且免费提供的PDF应用程序列表下载并可选择升级到付费许可证。
万兴PDF专家
适用于iOS设备的免费,功能丰富的PDF阅读器,提供在旅途中编辑本机PDF的各种工具。您可以标记和注释PDF文件,填写和签名表格,转换文档,插入签名等等。
下载链接:
Android版PDF编辑器_免费PDF编辑器_安卓PDF编辑器 -万兴PDF专家
PDFviewer
跨设备和跨平台软件,用于创建,查看,注释,添加多媒体,创建表单,编辑文件,用密码保护它们,重新排列页面,将不同页面合并到一个文档中,添加签名,将文件与PDF相互转换,压缩文件,以便于处理,甚至可以提高生产率。
无论您打算将其用于什么设备,此工具都是理想的PDF解决方案,无论您打算将其用于什么用途-阅读电子书,创建交互式Powerpoint演示文稿,共享Excel电子表格或与您的同事就PDF进行协作。您可以安装免费版本或升级,然后通过方便的一次性购买选项获得具有完整功能的付费版本。
福昕PDF Reader移动版
这款易于使用的PDF阅读器为查看和管理PDF文件提供了多种有用的功能。订阅附带了一些高级功能,例如创建,转换,编辑,插入多媒体文件以及向文档添加签名。除此之外,ConnectedPDF功能还增强了付费许可证,该功能是一种领先的PDF技术,可为PDF文件提供基于云的服务。
PDF Expert
这是处理任何类型文档(包括带有图形和表格的巨大PDF文件)的理想的用户友好解决方案。该应用程序使您可以编辑图像,文本和链接,管理多个页面文件,填写表格以及添加eSignatures ^注释和注释。而且,如果您喜欢使用Apple Pencil,该应用程序可让您随时随地通过绘画,绘画或素描来捕捉***创意的想法。
我的回答可能有些偏颇。
关于安卓pdf阅读器和安卓pdf阅读器哪个好用的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。