以前在手机端看扫描版的pdf电子书,要么放大后用手指来回拖动着看,要么将手机横屏看,阅读体验非常差!后来就想自己做一款能自动重排版的pdf阅读器,于是小白PDF阅读器就诞生了!

小白PDF阅读器的重排版功能实现方式并不复杂,但是实现过程比较繁琐。主要实现思路就是将pdf页面的所有元素分割出来主要包括文字英文单词图片表格等,然后再根据屏幕大小重新排版。

经过迭代开发,小白PDF阅读器从最初的只支持简单的图文混排到现在已经能适应大部分复杂页面重排版

下面是一些pdf页面的排版效果

最新版的小白PDF阅读器支持带有背景色区域的文字重排版,并且支持带有轮廓区域的文字重排版。在1.43版本中优化了对下划线的支持,现在重排版时已能正确识别下划线,波浪下划线等

下面这个页面有些复杂,页面倾斜,半分栏排版,图文表格都有。小白PDF阅读器也能自动校正页面并能做到正确重排版

计算机类的书籍大部分都带有代码片段,如果在重排版时不考虑代码格式,就会导致重排后的代码格式混乱。小白PDF阅读器在重排时单独对代码片段进行了处理,可以较好的保留代码格式。

针对有数学公式的页面,小白PDF阅读器也单独进行了优化。看论文文献等类型的pdf,效果也不错

针对试题类页面,小白PDF阅读器也进行了优化,可以较好的展示选择题等

针对扫描版文字不清晰的页面小白PDF阅读器提供了OCR渲染模式,两种渲染模式可在App里随意切换,由于移动端性能受限,无法运行高精度OCR模型,会导致部分文字识别错误。后续这块的优化思路会将OCR识别模块放到服务端,不过还得买服务器,成本有点高。

很多用户喜欢各种各样的背景色,同样小白PDF阅读器也支持更换背景色功能,下图展示了夜晚主体下的暗黑背景色,App里还有多种内置背景颜色可供选择。

小白PDF阅读器还支持标记,手写标记等丰富的功能。

专为移动端设计的PDF阅读器-小白PDF阅读器的更多相关文章

  1. Android原生PDF功能实现:PDF阅读、PDF页面跳转、PDF手势伸缩、PDF目录树、PDF预览缩略图

    1.背景 近期,公司希望实现安卓原生端的PDF功能,要求:高效.实用. 经过两天的调研.编码,实现了一个简单Demo,如上图所示. 关于安卓原生端的PDF功能实现,技术点还是很多的,为了咱们安卓开发的 ...

  2. TYPESDK手游聚合SDK服务端设计思路与架构之一:应用场景分析

    TYPESDK 服务端设计思路与架构之一:应用场景分析 作为一个渠道SDK统一接入框架,TYPESDK从一开始,所面对的需求场景就是多款游戏,通过一个统一的SDK服务端,能够同时接入几十个甚至几百个各 ...

  3. 《Linux内核设计与实现》CHAPTER1,2阅读梳理

    <Linux内核设计与实现>CHAPTER1,2阅读梳理 [学习时间:2.5hours] [学习内容:Linux内核简介——历史与现今版本:Linux内核源代码以及编译] CHAPTER1 ...

  4. HTML & CSS设计与构建网站 ([美]达科特) PDF原版​

    HTML & CSS 设计与构建网站采用有别于许多传统编程书籍的新颖编排方式,将使您收到事半功倍的学习效果.每一页都在短小精悍的示例代码的引导下,简明直观.直截了当地阐述一个新主题. < ...

  5. .NET 操作PDF文档以及PDF文件打印摸索总结

    关于生成 PDF 的操作,相信大家的在实际的工作过程中难免会碰到.以前我们通过生成 word 文档来进行文件的打印,但是由于太过依赖 office 软件,因此尝试能不能使用 PDF 进行文件打印. 在 ...

  6. PDF编辑方法,PDF怎么去除背景

    PDF文件现在是使用的频率很高的一个软件的格式,PDF文件能够更加直观清楚的表达,PDF文件的使用很方便但编辑起来就来没有那么容易了,PDF文件的编辑是需要借助软件的,今天小编就来跟大家分享一下PDF ...

  7. PDF软件推荐——Sumatra PDF - imsoft.cnblogs

    Sumatra PDF 优点:绿色,小巧,快速,支持格式丰富 缺点:不支持修改和添加标记 链接: http://pan.baidu.com/s/1eQ1s3Nc 密码: d8h6 主页:http:// ...

  8. 如何快速增加pdf书签,解除pdf限制

    一.需要的工具 福昕PDF阅读器 Foxit PDF Editor 2.2.1 build 1119 汉化版 下载地址:http://www.onlinedown.net/soft/51002.htm ...

  9. 分享《Python 游戏编程快速上手(第3版)》高清中文版PDF+高清英文版PDF+源代码

    通过编写一个个小巧.有趣的游戏来学习Python,通过实例来解释编程的原理的方式.14个游戏程序和示例,介绍了Python基础知识.数据类型.函数.流程控制.程序调试.流程图设计.字符串操作.列表和字 ...

  10. pdf.js浏览中文pdf乱码的问题解决

    由于项目中需要支持移动设备在线浏览pdf,苹果还好,天生支持,但是安卓中就不行了,需要第三方组件的支持. 这里就找到了pdf.js,由于pdf数据太多,开始的时候没法一一测试,所以随便测试打开了几篇没 ...

随机推荐

  1. 终于有人把Modbus讲明白了

    大家好!我是付工. 2012年开始接触Modbus协议,至今已经有10多年了,从开始的懵懂,到后来的顿悟,再到现在的开悟,它始终岿然不动,变化的是我对它的认知和理解. 今天跟大家聊聊关于Modbus协 ...

  2. LiveChat vs LiveAgent vs Front vs Email

    它们是什么? LiveChat, LiveAgent 算是同类产品. LiveChat 的核心(或者说起点)是 live chat 这个功能, 而 LiveAgent 的核心是 ticket. 如果拿 ...

  3. [USACO1.5] 八皇后 Checker Challenge 题解

    [USACO1.5] 八皇后 Checker Challenge 题目描述 一个如下的 \(6 \times 6\) 的跳棋棋盘,有六个棋子被放置在棋盘上,使得每行.每列有且只有一个,每条对角线(包括 ...

  4. 【QT性能优化】QT性能优化之QT6框架高性能模型视图代理框架千万级数据表分层查询优化

    [QT性能优化]QT性能优化之QT6框架高性能模型视图代理框架千万级数据表分层查询优化 简介 本文使用QT树状控件QTreeView快速展示SQLite数据库中的1000万条具有层次结构的数据记录,当 ...

  5. k8s的容器的webssh实现

    Vite2.x + Vue3.x + Xtermjs4 相关信息 编程语言:TypeScript 4.x + JavaScript 构建工具:Vite 2.x 前端框架:Vue 3.x 路由工具:Vu ...

  6. 【解题报告】P8477 「GLR-R3」春分

    P8477 「GLR-R3」春分 题目看起来比较魔怔,考虑怎么搞一下. 首先,一个最简单的想法,每对溶液组都配一个板子,可以用 \(n^2\) 个板子解决,看得出来很不优啊,但是可以得到 Sub1 的 ...

  7. php7新内容总结(随时更新)

    一.参数和返回值类型申明 可以申明的有:float,int,bool,string,interfaces,array,callable 一般模式: function sum(int ...$ints) ...

  8. Android Qcom USB Driver学习(十四)

    UDC-Gadget UDC:(USB Device Controller)用于管理和控制USB设备与主机之间的通信. Gadget:Android在此层实现了adb,mtp(Media Transf ...

  9. arm64 下内核 crash—— 非法地址

    下面是在实际工作中遇到的一次内核(5.4.110)访问非法内存地址(空指针)导致出错的现场,在这里记录一下简单的分析流程为以后遇到类似的问题作为参考. [ 220.619861] Unable to ...

  10. Failed to connect to github.com port 443: Connection refused问题解决

    解决办法: 1.找到github的ip地址:查找链接 2.找到本地的hosts文件.我的hosts文件路劲为:C:\Windows\System32\drivers\etc 3.在hosts文件最后添 ...