Android手写签批功能实现(适配Android6.0及以上)
Android手写签批功能的实现在于三个点,mupdf,偏移量的计算,droidText0.5.jar
实际步骤:
- 使用muPdf将PDF加载出来
- 弹出透明的popwindow,popWindow使用画板(一般签批我们都会用有笔锋的钢笔或者毛笔)
- 将签批好的图片生成Bitmap
- 将该Bitmap通过droidText生成一份新的PDF(这一步放到异步中进行,因为耗时)
mupdf
我们使用MUPdf来加载PDF,这里不一定要用MUPDF,也可以按照自己的想法来使用其他的,mupdf在Android6.0以上的机型上会出现一个问题libmupdf.so: has text relocations,当我们将targetSdkVersion改成23以下即可,但是这不是我们真正的解决办法,真正的解决办法是重新编译mupdf,这里我们可以参考如何在Android6.0及以上嵌入MuPdf
根据这篇文章编译出自己想要的so文件,然后直接用就可以了,这里一定要注意:
- 在创建new MuPDFCore(path);对象的时候一定要去动态获取权限,不然就会一直报打不开文件,或者找不到文件,这里不会提示权限问题(我是没看见日志提示我是权限的问题)
- 因为按照文章来编译的包名是com.artifex.mupdfdemo,所以我们要使用MuPDFCore的时候需要一样的包名结构,这里我们在编译so文件的时候可以去更改他的包名(不想改包名就直接按照他所说的将包名目录全部拷过去)
偏移量的计算
在PDF签批的时候我们经常遇到一个问题,就是签出的文字不在我们之前签的位置(一般是出在放大或者缩小的时候再签批时),这就是要计算一个偏移量了
//宽度偏移量
float widthScale=1.0f * readerView.scrollX / readerView.getDisplayedView().getWidth();
//高度偏移量
float heightScale=1.0f * readerView.scrollY / readerView.getDisplayedView().getHeight();//缩放比float widthPercent = bitmap.getWidth() / (float) readerView.getDisplayedView().getWidth();float heightPercent = bitmap.getHeight() / (float) readerView.getDisplayedView().getHeight();
droidText0.5.jar
将签出的图片嵌入到PDF中,这里可以使用iText.jar,不一定要使用droidText0.5.jar
try {PdfReader reader = new PdfReader(inPath, "PDF".getBytes());FileOutputStream outputStream = new FileOutputStream(outPath);PdfStamper stamp;stamp = new PdfStamper(reader, outputStream);PdfContentByte over = stamp.getOverContent(pageNum);byte[] bytes = Bitmap2Bytes(bitmap);Image img = Image.getInstance(bytes);Rectangle rectangle = reader.getPageSize(pageNum);img.setAlignment(1);//设置ImageView的位置img.scaleAbsolute(rectangle.getWidth() * mImgWidthPercent, rectangle.getHeight() * mImgHeightPercent);//设置ImageView的偏移量img.setAbsolutePosition(rectangle.getWidth() * widthScale, rectangle.getHeight() * heightScale);over.addImage(img);stamp.close();} catch (FileNotFoundException e) {e.printStackTrace();} catch (MalformedURLException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();} catch (BadElementException e) {e.printStackTrace();} catch (DocumentException e) {e.printStackTrace();}
以上资料,皆是参考以下大佬的文章,非常感谢你们的付出:
https://blog.csdn.net/qq_33571718/article/details/78811130
https://blog.csdn.net/acrambler/article/details/17377527
Android手写签批功能实现(适配Android6.0及以上)相关推荐
- android 手写签批_Android手写签批功能实现(适配Android6
Android手写签批功能的实现在于三个点,mupdf,偏移量的计算,droidText0.5.jar 实际步骤: 使用muPdf将PDF加载出来 弹出透明的popwindow,popWindow使用 ...
- h5 实现 画图 手写签批功能
太久没更新博客了,又不知道写些什么.最近看到支付宝上的手写签批功能,就想着自己用h5实现了. 写完了后发现太简单了,就加上了写以前window 画图软件的功能. 以下为源码 <!DOCTYPE ...
- android 手写签批_Android自定义View——手写签批
接到一个领导批示保留原笔迹的功能,类似于绘画板,用户打开后可以绘制,点击完成后以图片的形式保存在本地,并且显示绘制后图片,上传服务器,达到保留原笔迹的目的.可以运用于签字.审批等. 效果图: 手写签批 ...
- android 手写签批_Android自定义实现手写签名功能
一.Android自定义View步骤 : 自定义属性: 选择和设置构造方法: 重写onMeasure()方法: 重写onDraw()方法: 重写onLayout()方法: 重写其他事件的方法(滑动监听 ...
- android 手写签批_Android手写签名效果
任何画线的程序,都是先在界面上获取若干不连续的点,然后将这些点连成线. 一些常见的笔型比较好实现,比如说铅笔.钢笔等等,这类笔型的线条的宽度和线条的颜色是固定的,只需要将点连接成固定颜色和固定宽度的线 ...
- 苏菲surface平板手写签批办公系统
微软推出surface至今已经有好几年了,其与PC电脑的操作方式一致,使得不少单位将其定义为生产力工具.新版本不断更新换代,使得其性价比越来越高.配合win 10的操作系统,操作体验虽然比不上macb ...
- 开源O2OA办公平台:手写签批介绍
概述 手写签批是建立在O2OA开发平台的公文编辑器组件基础上,允许用户在公文内容上进行手写.签名.批注.文字输入.擦除的一系列功能.手写签批功能可以直观的展现每位处理人对公文内容的批注,有效的提高办公 ...
- Java 开源开发平台 O2OA V7.1.0 发布,人力资源办公平台及手写签批上线
O2OA V7.1.0发布,新增了[人力资源办公平台]和版式公文中的[手写签批]功能. [人力资源办公平台]是使用O2OA开发平台设计并开发的一套适合于人力资源管理的办公系统.该平台将人力资源管理的所 ...
- php 手写签批 手机办公_手写签批 打造无纸化办公的完美替代
无纸办公,低碳环保,是近些年办公市场呈现的趋势,许多企业都开始推广OA办公系统来进行公文流转,传统的纸制办公转变为无纸化办公,极大提升了企业的运作效率. 随着科技发展,办公信息化也在与时俱进,许多原本 ...
最新文章
- html css样式div属性,div css
- bios设置 联想m8000t_联想怎样设置双显卡模式 联想设置双显卡模式方法【详解】...
- jsp mysql中文乱码,jsp中文乱码 jsp mysql 乱码的解决方法
- 退出命令_Vim命令报错问题:无法用:wq命令保存并退出只读文件
- java--Hibernate添加数据save
- 洛谷P4322 最佳团伙(树上dp)
- 计算机net use命令使用,网络命令net之net use应用
- C语言程序设计与有限元,C语言与有限元程序设计.pdf
- java adt is保存快捷键_ADT - Eclipse 常用快捷键
- Android自定义控件学习(三)----- 自定义视图组件
- 移动互联网时代,学iOS开发好吗
- [原创]JSLint-Toolkit v1.2 - Update with qooxdoo1.3
- todo Java 并发编程
- matlab实现矩形脉冲串,python中的矩形脉冲串
- python汇率的转换程序_用Python制作汇率转换小程序
- 前端必备知识之 Nginx 复盘总结
- 苹果receipt例子
- 7-6 打妖怪 (10 分)
- C# 模拟POST上传图片
- springboot+thymeleaf+bootstrap+mybatis-Plus+mysql 情侣空间网站源代码