【问题标题】:PDF to bitmap image conversoin using mupdf n android使用 mupdf n android 将 PDF 转换为位图图像
【发布时间】:2012-11-24 03:44:32
【问题描述】:

我在我的 android 应用程序中使用 mupdf 库来查看 pdf 文件。谁能告诉我如何使用 mupdf 库获取 pdf 每一页的位图图像?提前谢谢....

【问题讨论】:

标签: android pdf mupdf


【解决方案1】:

该库似乎已更新,如果调用 drawPage() 则不会渲染图像,但如果我们提供 updatePage() 则可以正常工作

从示例源代码中找到下面的sn-p

//Activity onCreate()

int x = Utils.getScreenSize(this)[0];
int y = Utils.getScreenSize(this)[1];

final ImageView imageView = (ImageView) findViewById(R.id.holderimageview); 
final Bitmap mSharedHqBm = Bitmap.createBitmap(x,y, Bitmap.Config.ARGB_8888);

new CancellableAsyncTask<Void, Void>(getDrawPageTask(mSharedHqBm, x,y, 0, 0, x, y)) {

        @Override
        public void onPreExecute() {
            imageView.setImageBitmap(null);
            imageView.invalidate();

            // Show some imageholder/spinner/progress etc.
        }

        @Override
        public void onPostExecute(Void result) {
            imageView.setImageBitmap(mSharedHqBm);
            imageView.invalidate();
        }
    }

// method in activity
protected CancellableTaskDefinition<Void, Void> getDrawPageTask(final Bitmap bm, final int sizeX, final int sizeY, final int patchX, final int patchY, final int patchWidth, final int patchHeight) { return new MuPDFCancellableTaskDefinition<Void, Void>(core) {
        @Override
        public Void doInBackground(MuPDFCore.Cookie cookie, Void ... params) {
            // Workaround bug in Android Honeycomb 3.x, where the bitmap generation count
            // is not incremented when drawing.
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB &&                       Build.VERSION.SDK_INT < Build.VERSION_CODES.ICE_CREAM_SANDWICH)                 bm.eraseColor(0);
            core.updatePage(bm, somepagenumber, sizeX, sizeY, patchX, patchY, patchWidth, patchHeight, cookie);
            return null;
            }
        };
}

【讨论】:

【解决方案2】:

我找到了生成位图的解决方案。

ThumbnailsActivity.mBitmapList=new ArrayList<Bitmap>();
                for(int i=0;i<core.countPages();i++){
                     Bitmap bitmap=core.drawPage(i, 200, 200, 0, 0, 200, 200);
                     if(bitmap!=null){
                         ThumbnailsActivity.mBitmapList.add(bitmap);
                     }
                }

我希望这对其他人有帮助。谢谢!

【讨论】:

  • 没有带有您显示的参数的方法 drawPage。但是有:drawPage(位图bm,int page,int pageW,int pageH,int patchX,int patchY,int patchW,int patchH)
【解决方案3】:

使用MUPDFcore.class中的函数,它被称为drawPage(int page, int PDF width,int PDF height, 0,0,int bitmap width,int bitmap height)

此函数返回位图图像。 第一个参数是要渲染的页面。

第二个和第三个参数是PDF的大小。

第 4 和第 5 个参数是要填充 PDF 渲染图像的位图位置的开始(这是假设,因为没有关于这些参数的确切文档)

第 6 和第 7 个参数是将填充 PDF 渲染图像的位图大小。

我已经在他们提供的示例项目中完成了。 现在我正在尝试在另一个项目中使用它,但我仍然遇到困难。

【讨论】:

  • 请看我的相关问题:stackoverflow.com/questions/30858689/…
  • MUPDFCore.java 中唯一的 drawPage 是这一行::::: public synchronized void drawPage(Bitmap bm, int page,int pageW, int pageH,int patchX, int patchY,int patchW, int patchH,MuPDFCore.Cookie cookie) {gotoPage(page);drawPage(bm, pageW, pageH, patchX, patchY, patchW, patchH, cookie.cookiePtr);}
  • @SaravanaKumarChinnaraj 我找不到 drawPage 方法。
  • okie 我希望我能帮助你.. @Mr.Hyde.. 你检查过 MuPDF Lib..吗?
  • @SaravanaKumarChinnaraj 是的,在整个项目中。请看我原来的问题:stackoverflow.com/questions/30858689/…
猜你喜欢
  • 2023-04-05
  • 2015-08-12
  • 1970-01-01
  • 2012-03-31
  • 2019-03-08
  • 2012-07-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多