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. Flutter 耗时监控 | 路由名为空原因分析

    前言 最近群里遇到获取Route名为空的问题,当时没在意... 直到自己在监控页面启动耗时,需要确定当前页面是哪个从而方便标记它加载的耗时时,遇到同样 route.settings.name 为空问题 ...

  2. Flutter 3.7 新特性:介绍后台isolate通道

    Flutter 3.7 发布,本人对其中后台 isolate 通道比较感兴趣,迫不及待翻译了下Aaron Clarke文章,第一次翻译,有不足地方欢迎各位大佬们评论区指正,我将持续更新到本文,谢谢. ...

  3. 图书管理系统BMS

    图书管理系统BMS 效果图: 主要代码: 表关系的创建: from django.db import models # Create your models here. class Book(mode ...

  4. 【Oculus Interaction SDK】(二)抓取释放效果的物理优化

    前言 这篇文章是[Oculus Interaction SDK]系列的一部分,如果发现有对不上的对方,可以回去翻看我之前发布的文章,或在评论区留言.如果文章的内容已经不适用于新版本了,也可以直接联系我 ...

  5. Visual Studio 集成了.NET 升级助手插件

    .NET团队2023年2月16日在官方博客上发布了名为".NET Upgrade Assistant"的全新 Visual Studio 扩展,帮助开发人员升级.NET 应用程序. ...

  6. 安卓逆向 利用JEB进行动态调试断点 进行内购

    1.第一步肯定是需要配置好,连接到模拟器 2.这个程序会弹出支付失败 所以我们搜索一下关键字 看到这里就很兴奋了 我们取JEB里面对这个方法进行断点 if eqz 等于0 这里 看到那个寄存器是v5 ...

  7. ElasticSearch7.6入门

    笔记记录 B站狂神说Java的ElasticSearch课程:https://www.bilibili.com/video/BV17a4y1x7zq 一.ElasticSearch概述 官网:http ...

  8. 两台linux服务器互相自动备份

    转载:csdn https://blog.csdn.net/gjwgjw1111/article/details/103515031

  9. CCRD_TOC_2007_EULAR专辑_2

    中信国健临床通讯 EULAR 2007专辑II 目录 类风湿关节炎 1 Etanercept联合MTX治疗RA导致炎症与骨破坏进展之间的失关联也见于单关节水平:来自TEMPO的研究数据 Landewe ...

  10. C# .NET 发展史

    C#发展到现在已经20年左右了,之前发展都是按照.NET Framework的版本发展,直到.NET Framework4.8结束.后来以.NET Core的版本发展,直到.NET Core3.1.3 ...