0

android.webkit.WebView 有capturePicture () 来捕获当前 WebView 的全部内容,但是你如何只对网页上的特定元素执行此操作呢?例如,您可能在 . 中使用 CSS 定位了许多图像和文本元素div。可能有很多元素,但我只想捕获div它们在 WebView 中呈现的内容。

我想出的唯一想法是div仅将其加载为另一个 WebView 的整个 HTML 并调用capturePicture. 另一个问题是如何将Picture对象转换为可与 iText 库(PNG、JPEG、GIF)一起使用的格式。有没有更简单的方法来实现这一点?

(我的应用程序的一个功能是输出PDF文档。)

4

1 回答 1

1

您可以使用view.setDrawingCacheEnabled(true);将视图捕获为图像。然后你必须创建一个方法来做到这一点。这是我的保存方法

    void Save() {
    if (null != view.getDrawable()) {
        view.setDrawingCacheEnabled(true);
        view.buildDrawingCache();
        save = view.getDrawingCache();
        final File myDir = new File(folder);
        myDir.mkdirs();
        final Random generator = new Random();
        int n = 10000;
        n = generator.nextInt(n);
        final String fname = "StyleMe-" + n + ".png";
          file = new File(myDir, fname);
        if (file.exists())
            file.delete();
        try {
            final FileOutputStream out = new FileOutputStream(file);
            save.compress(Bitmap.CompressFormat.PNG, 100, out);
            out.flush();
            out.close();
            sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED,
                    Uri.parse("file://"
                            + Environment.getExternalStorageDirectory())));
            Toast.makeText(getApplication(), "Image Saved",
                    Toast.LENGTH_SHORT).show();
        } catch (final Exception e) {
            Toast.makeText(getApplication(),
                    "Something Went Wrong check if you have Enough Memory",
                    Toast.LENGTH_LONG).show();
        }
    } else {
        final Toast tst = Toast.makeText(getApplication(),
                "Please Select An Image First", Toast.LENGTH_LONG);
        tst.setGravity(Gravity.CENTER, 0, 0);
        tst.show();
    }
    view.setDrawingCacheEnabled(false);
}
于 2013-02-20T08:10:17.910 回答