import android.graphics.Bitmap;
import android.graphics.Color;
import android.graphics.RectF;
import android.util.Log; import java.util.LinkedList; import com.artifex.mupdfdemo.MuPDFCore;
import com.artifex.mupdfdemo.OutlineActivityData;
import com.artifex.mupdfdemo.Page;
import com.artifex.mupdfdemo.TextWord; public class MuPDFReader {
private final static String TAG = "MuPDFReader"; private MuPDFCore mCore;
private Page mCurrentPage;
private int mCurrentPageNumber;
private DocumentListener mListener; public MuPDFReader(String path) {
try {
mCore = new MuPDFCore(path);
mCurrentPageNumber = 0;
mCurrentPage = mCore.getPage(0);
} catch (Exception e) {
Log.e(TAG, e.getMessage());
}
} public int getPageCount() {
return mCore.countPages();
} public void setCurrentPage(int pageNumber) {
if (pageNumber < 0 || pageNumber >= mCore.countPages()) {
return;
}
mCurrentPageNumber = pageNumber;
mCurrentPage = mCore.getPage(pageNumber);
if (mListener != null) {
mListener.onPageChanged(pageNumber);
}
} public int getCurrentPageNumber() {
return mCurrentPageNumber;
} public void setDocumentListener(DocumentListener listener) {
mListener = listener;
} public void goToPreviousPage() {
if (mCurrentPageNumber > 0) {
mCurrentPageNumber--;
mCurrentPage = mCore.getPage(mCurrentPageNumber);
if (mListener != null) {
mListener.onPageChanged(mCurrentPageNumber);
}
}
} public void goToNextPage() {
if (mCurrentPageNumber < mCore.countPages() - 1) {
mCurrentPageNumber++;
mCurrentPage = mCore.getPage(mCurrentPageNumber);
if (mListener != null) {
mListener.onPageChanged(mCurrentPageNumber);
}
}
} public Bitmap getPageBitmap(int width, int height) {
return mCurrentPage.getBitmap(width, height);
} public LinkedList<OutlineActivityData> getOutlines() {
LinkedList<OutlineActivityData> data = new LinkedList<OutlineActivityData>();
OutlineActivityData root = new OutlineActivityData(null, -1);
root.children = mCore.getOutline();
data.add(root);
return data;
} public LinkedList<TextWord> getTextWords() {
return mCurrentPage.getText();
} public RectF getPageBounds(int width, int height) {
return mCurrentPage.getBounds(width, height);
} public void drawBackground(Bitmap bm, int pageW, int pageH, int patchX,
int patchY, int patchW, int patchH) {
mCurrentPage.drawBackground(bm, pageW, pageH, patchX, patchY, patchW,
patchH);
} public void drawPage(Bitmap bm, int pageW, int pageH, int patchX,
int patchY, int patchW, int patchH) {
mCurrentPage.draw(bm, pageW, pageH, patchX, patchY, patchW, patchH,
Color.BLACK, Color.WHITE);
} public void addAnnotation(float x, float y, float w, float h, int color) {
mCurrentPage.addAn

Android集成mupdf,实现手写笔签字,手指翻页的java代码的更多相关文章

  1. Android+TensorFlow+CNN+MNIST 手写数字识别实现

    Android+TensorFlow+CNN+MNIST 手写数字识别实现 SkySeraph 2018 Email:skyseraph00#163.com 更多精彩请直接访问SkySeraph个人站 ...

  2. 苹果没放弃手写笔 这样的iPad你想要吗?

    12 月 31 日,美国专利与商标局(The U.S. Patent and Trademark Office)当地时间周四批准了一项来自苹果的专利申请,该专利主要描述的是一种可以通过陀螺仪.无线通讯 ...

  3. 手把手集成web端手写公式功能

    何为手写公式,很简单,就是在网页上可以写出数学公式,并能够生成Latex格式的字符串.废话不多说,直接走正题. 一.首先大家可以先去官网了解一下myscript这个插件 官方网站:https://de ...

  4. servlet(1) - 手写第一个servlet程序 - 小易Java笔记

    声明:如tomcat的安装目录为D:\Java\tomcat6,下面要根据tomcat的安装目录而定 1. 建立程序的文件结构 ==>找到tomcat的安装目录,在webapps目录下新建一个名 ...

  5. ★android开发--ListView+Json+异步网络图片加载+滚动翻页的例子(图片能缓存,图片不错乱)

    例子中用于解析Json的Gson请自己Google下载 主Activity: package COM.Example.Main; import java.util.HashMap; import ja ...

  6. 纯css3写的仿真图书翻页效果

    对css3研究越深入,越觉得惊艳.css3说不上是万能的,但是它能实现的效果也超出了我的想象.它的高效率和动画效果的流畅性很多情况下能替代js的作用.个人习惯css3能实现的效果就不会用js,虽然在国 ...

  7. Android 滑动效果高级篇(七)—— 华丽翻页效果

    By 何明桂(http://blog.csdn.net/hmg25) 转载请注明出处 之前看到像ipad上的ibook的模拟书籍翻页的特效感觉很炫,在android上也有像laputa和ireader ...

  8. 不要写很酷但同事看不懂的Java代码

    你好呀,我是沉默王二,一个和黄家驹一样身高,和刘德华一样颜值的程序员.为了提高 Java 编程的技艺,我最近在 GitHub 上学习一些高手编写的代码.下面这一行代码(出自大牛之手)据说可以征服你的朋 ...

  9. 4、android xml中drawableTop(drawableBoottom、drawableLeft、drawableRight)在java代码中的动态配置

    做安卓开发的朋友都知道,我们在xml中可以通过这样来对button设置其上部或者(下.左.右)的图片资源: 那么如果需要动态配置图片呢?我们不得不使用java代码来进行操作: Drawable dra ...

  10. HDU 5183 Negative and Positive (NP) ——(后缀和+手写hash表)

    根据奇偶开两个hash表来记录后缀和.注意set会被卡,要手写hash表. 具体见代码: #include <stdio.h> #include <algorithm> #in ...

随机推荐

  1. 【学习笔记】Splay

    \(\texttt{0x01}\) 前言 Splay 树(伸展树)是一棵二叉搜索树,由 Daniel Sleator 和 Robert Tarjan 于 1985 年发明.它凭借旋转可以有 $O(\l ...

  2. 单细胞转录组实战01: CellRanger7定量

    安装CellRanger cd ~/APP wget -O cellranger-7.1.0.tar.xz "https://cf.10xgenomics.com/releases/cell ...

  3. Pytest插件pytest-assume多重断言

    Pytest插件pytest-assume多重断言 背景 import pytest def test_assume1(): assert 1 == 2 print('hello') assert 2 ...

  4. Spring04-AOP(Debug查看执行流程)

    1 AOP的几个核心技术 AOP-面向切面编程的实现的核心技术:jvm运行期间对字节码进行修改或者动态生成新的字节码文件(asm技术). 2 AOP的几个核心概念 AOP在运行期间我们要对class文 ...

  5. Linux07-常用命令-权限

    1.组 1.1基本说明 在linux中的每个用户必须属于一个组,不能独立于组外.在linux中每个文件有所有者.所在组.其它组的概念. 1) 文件所有者 谁创建的这个文件,文件的所有者就是谁 2) 文 ...

  6. ubuntu18.08安装eigen

    http://eigen.tuxfamily.org/index.php?title=Special%3AAllPages&from=&to=&namespace=100 除非 ...

  7. python_添加中文编码和脚本

    #!/usr/bin/env python 根据环境设置寻找python路径,必须放在第一行 # coding=utf-8 添加中文编码

  8. SpringMVC的文件、数据校验(Vaildator、Annotation JSR-303)

    SpringMvc的文件上传下载: 文件上传 单文件上传 1.底层使用的是Apache fileupload组件进行上传的功能,Springmvc 只是对其进行了封装,简化开发, pom.xml &l ...

  9. RxJava 异常时堆栈显示不正确?解决方法都在这里

    本文首发我的博客,github 地址 大家好,我是徐公,今天为大家带来的是 RxJava 的一个血案,一行代码 return null 引发的. 前阵子,组内的同事反馈说 RxJava 在 debug ...

  10. MySQL索引的基本理解

    之前一致以为索引就是简单的在原表的数据上加了一些编号,让查询更加快捷.后来发现里面还有更深的知识. 索引用于快速查找具有特定列值的行.如果没有索引,MySQL 必须从第一行开始,然后通读整个表以找到相 ...