首页 > 编程语言 >Android集成mupdf,实现手写笔签字,手指翻页的java代码

Android集成mupdf,实现手写笔签字,手指翻页的java代码

时间:2023-02-04 21:35:14浏览次数:36  
标签:mupdf mCurrentPageNumber 翻页 int mCurrentPage mCore import java public

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

 

标签:mupdf,mCurrentPageNumber,翻页,int,mCurrentPage,mCore,import,java,public
From: https://www.cnblogs.com/chenKnowledgeConllection/p/17092436.html

相关文章

  • Java多态
    Java中的多态是一个概念,通过它我们可以通过不同的方式执行单个动作(方法)。多态性派生自2个希腊词:“poly”和“morphs”。词语“poly”意为许多,“morphs”意为形式。所......
  • Java final关键字
    java中的final关键字用于限制用户修改变量或重写一个类或方法。javafinal关键字可以在许多上下文中使用。final可以是:变量方法类final关键字可以应用于变量,没有......
  • Java 多线程学习
    Java多线程学习Thread类学习首先使类继承Thread然后创建run方法其中在线程中run主要是线程执行体在线程中new这个类然后使用start进行线程打开注:线程中是同......
  • java 反射
    1、什么是发射?反射机制指的是程序运行时能够获取自身的信息,在java中,只要给定类的名字,就可以通过反射机制来获得类的所有属性和方法。2、在JVM运行时期可以做什么?......
  • Java lamdba表达式
    JavaLambda表达式函数式接口任何接口,如果只包含唯一一个抽象方法,那么它就是一个函数时接口publicinterfaceRunnable{ publicabstractvoidrun();}推导方法:......
  • java基础:流程控制
    顺序结构Java的执行过程就是顺序结构,除非说明,不然都是一句接一句执行。选择结构if选择结构if(布尔表达式1){//布尔表达式1为true执行}elseif(布尔表达式2){......
  • 基础知识-java程序运行机制
    编译型-compile(直译)操作系统适用,c/c++解释型-网页(对速度要求不高)Java(双重属性)、Javascriptjava运行机制源程序(.java文件)——java编译器——字节码(.class文件)——类装......
  • Java多线程并发04—线程池的合理使用
    为什么使用线程池?线程池做的工作主要是控制运行的线程的数量。线程池的种类Java中常用的线程池主要有四种:newCachedThreadPool、newFixedThreadPool、newScheduledThreadPo......
  • Java多线程并发05-锁说明
    根据锁的各种特性,可将锁分为以下几类:乐观锁/悲观锁独享锁(互斥锁)/共享锁(读写锁)可重入锁公平锁/非公平锁分段锁偏向锁/轻量级锁/重量级锁自旋锁乐观锁/悲观锁乐观锁与悲观锁并......
  • 【JavaScript】2_数据类型
    1、数值数值(Number)在JS中所有的整数和浮点数都是Number类型JS中的数值并不是无限大的,当数值超过一定范围后会显示近似值Infinity是一个特殊的数值表示无穷所以在JS中进行......