如何在android中从webview创建PDF? [英] How to create PDF from webview in android?

查看:18
本文介绍了如何在android中从webview创建PDF?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在 webview 中显示 webpage.现在如何从 webview 创建 PDF?

I am displaying webpage in webview. Now how to create PDF from webview ?

例如:webview 加载 URL 是 "www.google.co.in".现在如何将此网页另存为图像并创建 pdf ??

For Example : webview loads URL is "www.google.co.in". Now how to save this webpage as image and create pdf ??

任何帮助将不胜感激

推荐答案

试试这个

WebView 有内置方法 setPictureListener 使用该方法如下

WebView have inbuilt method called setPictureListener Use that method as below

webView1.setPictureListener(new PictureListener() {

            public void onNewPicture(WebView view, Picture picture) {
                if (picture != null) {
                    try {
                        bmp = pictureDrawable2Bitmap(new PictureDrawable(
                                picture));

                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            }
        });

为了获得位图,我使用了 pictureDrawable2Bitmap,这里是那个

For obtaining bitmap i have used pictureDrawable2Bitmap and here is that one

private static Bitmap pictureDrawable2Bitmap(PictureDrawable pictureDrawable) {
        Bitmap bitmap = Bitmap.createBitmap(
                pictureDrawable.getIntrinsicWidth(),
                pictureDrawable.getIntrinsicHeight(), Config.ARGB_8888);
        Canvas canvas = new Canvas(bitmap);
        canvas.drawPicture(pictureDrawable.getPicture());
        return bitmap;
    }

现在你的位图已经准备好了,现在设置 webview 客户端如下

Now Your Bitmap is ready,Now set webview client as below

webView1.setWebViewClient(new myWebClient());

这里是 myWebClient

public class myWebClient extends WebViewClient {
        @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
            // TODO Auto-generated method stub
            super.onPageStarted(view, url, favicon);
        }

        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            // TODO Auto-generated method stub

            view.loadUrl(url);
            return true;

        }

        @Override
        public void onPageFinished(WebView view, String url) {
            // TODO Auto-generated method stub
            super.onPageFinished(view, url);
            Log.i("OnPageLoadFinished", url);
            img.setImageBitmap(bmp);
        }

如页面加载完成所示,我已经设置了图像位图,它是您的 webview 上当前加载的 url 的快照

As shown on page load finished i have set image bitmap which is snap of current loaded url on your webview

现在位图已准备好使用 IText 库将该位图传递给 Pdf

Now Bitmap is ready pass that bitmap to Pdf using IText Library

这是在 iText 上用图像编写 pdf 的示例,为此使用下面的函数

Here is an example of writing pdf with image on iText Use Below function for that

public void SimplePDFTable() throws Exception {

    File direct = new File(Environment.getExternalStorageDirectory()
            .getAbsolutePath() + "/AamirPDF");
    if (!direct.exists()) {
        if (direct.mkdir()) {
            Toast.makeText(MainActivity.this,
                    "Folder Is created in sd card", Toast.LENGTH_SHORT)
                    .show();
        }
    }
    String test = Environment.getExternalStorageDirectory()
            .getAbsolutePath() + "/AamirPDF";
    Document document = new Document();

    PdfWriter.getInstance(document, new FileOutputStream(test
            + "/mypdf.pdf"));

    document.open();
    ByteArrayOutputStream stream = new ByteArrayOutputStream();
    bmp.compress(Bitmap.CompressFormat.PNG, 100, stream);
    byte[] byteArray = stream.toByteArray();
    Image image = Image.getInstance(byteArray);


    image.scaleToFit(PageSize.A4.getHeight(), PageSize.A4.getWidth());
    document.add(image);

    document.close();

}

祝你好运

这篇关于如何在android中从webview创建PDF?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆