从Android中的Webview生成的空白位图

问题描述 投票:2回答:1

我正在尝试从webview中的网页生成位图。我只能获取可见屏幕的位图,而无法获取屏幕其余部分的位图。因此,我正在手动向下滚动屏幕并再次获取位图,但是,此时生成的位图为空白。

这是我正在使用的代码:

 try {
            Bitmap bitmap = Bitmap.createBitmap(webview.getWidth(), webview.getHeight(), Bitmap.Config.ARGB_8888);
//            Bitmap bitmap = Bitmap.createBitmap(webview.getDrawingCache());
            Canvas canvas = new Canvas(bitmap);
            webview.draw(canvas);

            String GVCode = String.valueOf(System.currentTimeMillis());
            String root = Environment.getExternalStorageDirectory().toString();
            File myDir = new File(root + "/WebToPDF");
            myDir.mkdirs();

            String fname = GVCode + ".jpg";
            File file = new File(myDir, fname);
            if (file.exists()) file.delete();

            FileOutputStream out = new FileOutputStream(file);
            bitmap.compress(Bitmap.CompressFormat.JPEG, 90, out);
            out.flush();
            out.close();

            Document document = new Document();
            String input = Environment.getExternalStorageDirectory().toString() + "/WebToPDF/" + GVCode + ".jpg";
            String output = Environment.getExternalStorageDirectory().toString() + "/WebToPDF/" + GVCode + ".pdf";
            String stringPrintDirectory = Environment.getExternalStorageDirectory().toString() + "/WebToPDF/";

            File myDirPdf = new File(stringPrintDirectory);
            if (!myDirPdf.exists()) {
                myDirPdf.mkdirs();
            }

            FileOutputStream fos = new FileOutputStream(output);
            PdfWriter writer = PdfWriter.getInstance(document, fos);
            writer.open();
            document.open();
            Image img = Image.getInstance(input);
            document.setPageSize(img);
            document.newPage();
            img.setAbsolutePosition(0, 0);
            document.add(img);
            document.close();
            writer.close();
            LogShowHide.LogShowHideMethod("+++ : ", "Bitmap is Done.");

            webview.scrollTo(0, height);
            height = height + height;
        } catch (Exception e) {
            e.printStackTrace();
        }

如果有人能弄清楚我在哪里犯错,它将对我有很大帮助...

如有需要,随时询问更多信息。

java android webview bitmap
1个回答
0
投票

在创建网络视图之前调用WebView.enableSlowWholeDocumentDraw()

© www.soinside.com 2019 - 2024. All rights reserved.