现在的位置: 首页 > 综合 > 正文

借鉴EBookDroid源码,将一个pdf文件按页生成一系列的图片的实现方法

2013年09月16日 ⁄ 综合 ⁄ 共 1290字 ⁄ 字号 评论关闭
package com.pdf.test;

import org.ebookdroid.core.BitmapRef;
import org.ebookdroid.core.CodecDocument;
import org.ebookdroid.core.CodecPage;
import org.ebookdroid.core.LogContext;
import org.ebookdroid.droids.mupdf.codec.PdfContext;
import android.graphics.RectF;

import java.util.concurrent.atomic.AtomicLong;


public class PDFPageBitmapFactory {

	private static final AtomicLong SEQ = new AtomicLong();
	private  final LogContext LCTX  = LogContext.ROOT.lctx(this.getClass().getSimpleName(), true).lctx("" + SEQ.getAndIncrement(), true);


	private static PDFPageBitmapFactory  INSTANCE = new PDFPageBitmapFactory();
	private  PdfContext context;
	private  CodecDocument document;
	private  CodecPage page;

	private PDFPageBitmapFactory(){

	}

	public static PDFPageBitmapFactory getInstance(){
		return INSTANCE;
	}

	public void makePdfPagePreview(final String filePath,
			final String password){
		new Thread(){
			public void run(){
				context = new PdfContext();
				document = context.openDocument(filePath, password);
				RectF pageSliceBounds  = new RectF(0, 0, 1, 1);
				int a = document.getPageCount();
				String picName = "page_";
				for (int i = 0; i < a; i++) {
					page = document.getPage(i);
				    BitmapRef bitmapRef = page.renderBitmap(page.getWidth(), page.getHeight(),pageSliceBounds);
				    LCTX.i("make bitmap "+i);
					FileUtils.saveBitmapToFile(bitmapRef.getBitmap(), "/sdcard/pic/"+picName+i);
					LCTX.i("after save bitmap "+i);
			    }
			}

		}.start();
	}

}

//注意要添加 libebookdroid.so文件

抱歉!评论已关闭.