Android--PDF预览与创建

本文介绍了一种在Android平台上创建和转换PDF文件的方法。通过提供的抽象类`PdfCreator`,开发者可以方便地设置页面尺寸并绘制内容。此外,还介绍了如何将PDF页面逐页转化为图片。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

预览

方式一:https://github.com/JoanZapata/android-pdfview
方式二:https://github.com/deepankar1994/MuPDF_For_Android (mupdf)

创建

public abstract class PdfCreator {
    private PdfDocument mDocument;
    private int mPageWidth = 600;
    private int mPageHeight = 400;

    /**
     *
     * @param pageWidth The page width in PostScript (1/72th of an inch).
     * @param pageHeight The page height in PostScript (1/72th of an inch).
     */
    public PdfCreator(int pageWidth, int pageHeight) {
        mDocument = new PdfDocument();
        this.mPageWidth = mPageWidth;
        this.mPageHeight = mPageHeight;
    }

    public PdfCreator() {
        mDocument = new PdfDocument();
    }

    /**
     * 保存pdf
     * @param path
     * @throws IOException
     */
    public void saveToFile(String path) throws IOException {
        mDocument.writeTo(new FileOutputStream(new File(path)));
    }

    public void createPage(int pageNumber) {
        PdfDocument.PageInfo pageInfo = new PdfDocument.PageInfo.Builder(mPageWidth, mPageHeight, pageNumber).create();
        PdfDocument.Page page = mDocument.startPage(pageInfo);
        Canvas canvas = page.getCanvas();
        onDrawPage(canvas, pageInfo.getPageNumber());
        mDocument.finishPage(page);
    }

    public void endCreate() {
        mDocument.close();
    }

    public abstract void onDrawPage(Canvas canvas, int pageNum);

    public int getPageWidth() {
        return mPageWidth;
    }

    public void setPageWidth(int mPageWidth) {
        this.mPageWidth = mPageWidth;
    }

    public int getPageHeight() {
        return mPageHeight;
    }

    public void setPageHeight(int mPageHeight) {
        this.mPageHeight = mPageHeight;
    }
}

PDF转图片

PdfRenderer renderer = openRenderer(path);
int pageCount = renderer.getPageCount();
for(int i = 0; i < pageCount; i++) {
	PdfRenderer.Page page = renderer.openPage(i);
    Bitmap bitmap = Bitmap.createBitmap(page.getWidth(), page.getHeight(),
                    Bitmap.Config.ARGB_8888);
    page.render(bitmap, null, null, PdfRenderer.Page.RENDER_MODE_FOR_DISPLAY);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值