Android手写签批功能的实现在于三个点,mupdf,偏移量的计算,droidText0.5.jar
实际步骤:

  1. 使用muPdf将PDF加载出来
  2. 弹出透明的popwindow,popWindow使用画板(一般签批我们都会用有笔锋的钢笔或者毛笔)
  3. 将签批好的图片生成Bitmap
  4. 将该Bitmap通过droidText生成一份新的PDF(这一步放到异步中进行,因为耗时)

mupdf

 我们使用MUPdf来加载PDF,这里不一定要用MUPDF,也可以按照自己的想法来使用其他的,mupdf在Android6.0以上的机型上会出现一个问题libmupdf.so: has text relocations,当我们将targetSdkVersion改成23以下即可,但是这不是我们真正的解决办法,真正的解决办法是重新编译mupdf,这里我们可以参考如何在Android6.0及以上嵌入MuPdf
 根据这篇文章编译出自己想要的so文件,然后直接用就可以了,这里一定要注意:

  1. 在创建new MuPDFCore(path);对象的时候一定要去动态获取权限,不然就会一直报打不开文件,或者找不到文件,这里不会提示权限问题(我是没看见日志提示我是权限的问题)
  2. 因为按照文章来编译的包名是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及以上)相关推荐

  1. android 手写签批_Android手写签批功能实现(适配Android6

    Android手写签批功能的实现在于三个点,mupdf,偏移量的计算,droidText0.5.jar 实际步骤: 使用muPdf将PDF加载出来 弹出透明的popwindow,popWindow使用 ...

  2. h5 实现 画图 手写签批功能

    太久没更新博客了,又不知道写些什么.最近看到支付宝上的手写签批功能,就想着自己用h5实现了. 写完了后发现太简单了,就加上了写以前window 画图软件的功能. 以下为源码 <!DOCTYPE ...

  3. android 手写签批_Android自定义View——手写签批

    接到一个领导批示保留原笔迹的功能,类似于绘画板,用户打开后可以绘制,点击完成后以图片的形式保存在本地,并且显示绘制后图片,上传服务器,达到保留原笔迹的目的.可以运用于签字.审批等. 效果图: 手写签批 ...

  4. android 手写签批_Android自定义实现手写签名功能

    一.Android自定义View步骤 : 自定义属性: 选择和设置构造方法: 重写onMeasure()方法: 重写onDraw()方法: 重写onLayout()方法: 重写其他事件的方法(滑动监听 ...

  5. android 手写签批_Android手写签名效果

    任何画线的程序,都是先在界面上获取若干不连续的点,然后将这些点连成线. 一些常见的笔型比较好实现,比如说铅笔.钢笔等等,这类笔型的线条的宽度和线条的颜色是固定的,只需要将点连接成固定颜色和固定宽度的线 ...

  6. 苏菲surface平板手写签批办公系统

    微软推出surface至今已经有好几年了,其与PC电脑的操作方式一致,使得不少单位将其定义为生产力工具.新版本不断更新换代,使得其性价比越来越高.配合win 10的操作系统,操作体验虽然比不上macb ...

  7. 开源O2OA办公平台:手写签批介绍

    概述 手写签批是建立在O2OA开发平台的公文编辑器组件基础上,允许用户在公文内容上进行手写.签名.批注.文字输入.擦除的一系列功能.手写签批功能可以直观的展现每位处理人对公文内容的批注,有效的提高办公 ...

  8. Java 开源开发平台 O2OA V7.1.0 发布,人力资源办公平台及手写签批上线

    O2OA V7.1.0发布,新增了[人力资源办公平台]和版式公文中的[手写签批]功能. [人力资源办公平台]是使用O2OA开发平台设计并开发的一套适合于人力资源管理的办公系统.该平台将人力资源管理的所 ...

  9. php 手写签批 手机办公_手写签批 打造无纸化办公的完美替代

    无纸办公,低碳环保,是近些年办公市场呈现的趋势,许多企业都开始推广OA办公系统来进行公文流转,传统的纸制办公转变为无纸化办公,极大提升了企业的运作效率. 随着科技发展,办公信息化也在与时俱进,许多原本 ...

最新文章

  1. html css样式div属性,div css
  2. bios设置 联想m8000t_联想怎样设置双显卡模式 联想设置双显卡模式方法【详解】...
  3. jsp mysql中文乱码,jsp中文乱码 jsp mysql 乱码的解决方法
  4. 退出命令_Vim命令报错问题:无法用:wq命令保存并退出只读文件
  5. java--Hibernate添加数据save
  6. 洛谷P4322 最佳团伙(树上dp)
  7. 计算机net use命令使用,网络命令net之net use应用
  8. C语言程序设计与有限元,C语言与有限元程序设计.pdf
  9. java adt is保存快捷键_ADT - Eclipse 常用快捷键
  10. Android自定义控件学习(三)----- 自定义视图组件
  11. 移动互联网时代,学iOS开发好吗
  12. [原创]JSLint-Toolkit v1.2 - Update with qooxdoo1.3
  13. todo Java 并发编程
  14. matlab实现矩形脉冲串,python中的矩形脉冲串
  15. python汇率的转换程序_用Python制作汇率转换小程序
  16. 前端必备知识之 Nginx 复盘总结
  17. 苹果receipt例子
  18. 7-6 打妖怪 (10 分)
  19. C# 模拟POST上传图片
  20. springboot+thymeleaf+bootstrap+mybatis-Plus+mysql 情侣空间网站源代码

热门文章

  1. 当互联网码农遇见国企老同学
  2. 你知道吗?智能的最核心是什么?道翰天琼认知智能机器人平台API接口大脑为您揭秘。
  3. 声纹采集终端在公安部声纹库建设中的意义
  4. 加工并存储数据的数据结构(上)
  5. 【MFC】对话框练习
  6. 通过matlab的遗传算法工具求解规划问题
  7. 【渝粤题库】广东开放大学 国际标准化 形成性考核
  8. 微信支付宝二维码图片批量改名工具
  9. JavaScript条件判断true详解? true VS Truthy(真值)
  10. 虚拟现实是计算机软件么,虚拟现实系统是由哪些部分组成的?