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 @ 2023-02-04 21:22  今年我十八岁  阅读(485)  评论(0编辑  收藏  举报