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

复制代码
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
复制代码

 

posted @   今年我十八岁  阅读(550)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
点击右上角即可分享
微信分享提示