2013-09-22 54 views
1

我想第一個PDF頁面的圖像格式,我使用PdfViewer.jar,這是我的代碼越來越UnsupportedOperationException異常:不顯示圖像轉換PDF到圖像中的Android

private void pdfLoadImages() 
{ 
    try 
    { 
     // run async 
     new AsyncTask<Void, Void, Void>() 
       { 
        // create and show a progress dialog 
        ProgressDialog progressDialog = ProgressDialog.show(getActivity(), "", "Opening..."); 

        @Override 
        protected void onPostExecute(Void result) 
        { 
         //after async close progress dialog 
         progressDialog.dismiss(); 
        } 

        @Override 
        protected Void doInBackground(Void... params) 
        { 
         try 
         { 
          // select a document and get bytes 
          File file = new File(librosPdfRuta[0]); 
          RandomAccessFile raf = new RandomAccessFile(file, "r"); 
          FileChannel channel = raf.getChannel(); 
          ByteBuffer bb = ByteBuffer.NEW(channel.map(FileChannel.MapMode.READ_ONLY, 0, channel.size())); 
          raf.close(); 
          // create a pdf doc 
          PDFFile pdf = new PDFFile(bb); 
          //Get the first page from the pdf doc 
          PDFPage PDFpage = pdf.getPage(1, true); 
          //create a scaling value according to the WebView Width 
          //final float scale = 1000/PDFpage.getWidth() * 0.95f; 
          //convert the page into a bitmap with a scaling value 
          float scale = 1; 
          Bitmap page = PDFpage.getImage((int)(PDFpage.getWidth() * scale), (int)(PDFpage.getHeight() * scale), null, true, true); 

          guardarBytes(getBytes(page)); 


        } 
        catch (Exception e) 
        { 
         Log.d("CounterA", e.toString()); 
        } 
         return null; 
        } 
       }.execute(); 
       System.gc();// run GC 
    } 
    catch (Exception e) 
    { 
     Log.d("error", e.toString()); 
    } 
} 

我得到這個代碼從Need help to convert a Pdf page into Bitmap in Android Java

但我總是得到這個錯誤

09-22 13:51:37.232: E/APV.PDFRenderer(30616): do not show images 
09-22 13:51:37.232: E/APV.PDFRenderer(30616): java.lang.UnsupportedOperationException: do not show images 
09-22 13:51:37.232: E/APV.PDFRenderer(30616): at com.sun.pdfview.PDFImage.getImage(PDFImage.java:223) 
09-22 13:51:37.232: E/APV.PDFRenderer(30616): at com.sun.pdfview.PDFRenderer.drawImage(PDFRenderer.java:374) 
09-22 13:51:37.232: E/APV.PDFRenderer(30616): at com.sun.pdfview.PDFImageCmd.execute(PDFPage.java:654) 
09-22 13:51:37.232: E/APV.PDFRenderer(30616): at com.sun.pdfview.PDFRenderer.iterate(PDFRenderer.java:674) 
09-22 13:51:37.232: E/APV.PDFRenderer(30616): at com.sun.pdfview.BaseWatchable.run(BaseWatchable.java:101) 
09-22 13:51:37.232: E/APV.PDFRenderer(30616): at com.sun.pdfview.BaseWatchable.execute(BaseWatchable.java:263) 
09-22 13:51:37.232: E/APV.PDFRenderer(30616): at com.sun.pdfview.BaseWatchable.go(BaseWatchable.java:197) 
09-22 13:51:37.232: E/APV.PDFRenderer(30616): at com.sun.pdfview.PDFPage.getImage(PDFPage.java:237) 
09-22 13:51:37.232: E/APV.PDFRenderer(30616): at com.bookreader.LibrosDispositivo$1.doInBackground(LibrosDispositivo.java:347) 
09-22 13:51:37.232: E/APV.PDFRenderer(30616): at com.bookreader.LibrosDispositivo$1.doInBackground(LibrosDispositivo.java:1) 
09-22 13:51:37.232: E/APV.PDFRenderer(30616): at android.os.AsyncTask$2.call(AsyncTask.java:287) 
09-22 13:51:37.232: E/APV.PDFRenderer(30616): at java.util.concurrent.FutureTask.run(FutureTask.java:234) 
09-22 13:51:37.232: E/APV.PDFRenderer(30616): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230) 
09-22 13:51:37.232: E/APV.PDFRenderer(30616): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080) 
09-22 13:51:37.232: E/APV.PDFRenderer(30616): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573) 
09-22 13:51:37.232: E/APV.PDFRenderer(30616): at java.lang.Thread.run(Thread.java:841) 

我該如何解決呢?非常感謝

回答

-1

AsyncTask由3個參數構成。在你的情況下 android.os.AsyncTask。 這裏參數和結果是從UI線程輸入和輸出的。 你不應該在doInBackground()方法中使用任何使用ui線程的函數。 嘗試從doInBachround()返回位圖,onPostExecute將其刪除。

+0

你是對的,但我沒有繪製位圖,我只想獲得它,我得到這個錯誤,任何解決方案? – aloj

+0

嘗試在獲得PDFPage後關閉raf – Lebedevsd