1

最初の pdf ページを画像形式で取得したいのですが、PdfViewer.jar を使用しています。これが私のコードです

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)

どうすれば解決できますか?どうもありがとうございました

4

1 に答える 1

-1

AsyncTask は 3 つのパラメーターで作成されました。あなたの場合、android.os.AsyncTask. ここで、Params と Result は ui スレッドからの入力と出力です。doInBackground() メソッド内で UI スレッドを使用している関数は使用しないでください。doInBachround() から Bitmap を返すようにし、onPostExecute でそれを描画します。

于 2013-09-22T12:18:45.470 に答える