【问题标题】:Trying to save WebView to PDF in Android is there a way i can save the captured bitmap to the pdf尝试在 Android 中将 WebView 保存为 PDF 有没有一种方法可以将捕获的位图保存为 pdf
【发布时间】:2017-01-12 12:39:31
【问题描述】:

尝试在 Android 中将 WebView 保存为 PDF 有没有办法可以将捕获的位图保存为 pdf

如何将捕获的位图保存在我的代码中没有得到的 pdf 中

有什么方法可以将 webview 内容保存为 PDF

下面的共享代码

MainActivity.java

package com.example.webviewtopdf;

import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Picture;
import android.graphics.drawable.PictureDrawable;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.ImageView;

import java.io.FileOutputStream;

public class MainActivity extends AppCompatActivity {

    private WebView myWebView;
    Bitmap bmp;
    ImageView img;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);

        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Snackbar.make(view, "You PDF was Saved Successfully", Snackbar.LENGTH_LONG)
                        .setAction("Action", null).show();

                myWebView.capturePicture();
            }
        });

        myWebView = (WebView) findViewById(R.id.mywebview);

//        myWebView.setPictureListener(new WebView.PictureListener() {
//
//            public void onNewPicture(WebView view, Picture picture) {
//                if (picture != null) {
//                    try {
//                        Bitmap bmp = pictureDrawable2Bitmap(new PictureDrawable(picture));
//                        FileOutputStream out = new FileOutputStream(filename);
//                        bmp.compress(Bitmap.CompressFormat.PNG, 90, out);
//                        out.close();
//                    } catch (Exception e) {
//                        e.printStackTrace();
//                    }
//                }
//            }
//        });

        myWebView.setWebViewClient(new WebViewClient() {

            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                return false;
            }

            @Override
            public void onPageFinished(WebView view, String url) {

//                Picture picture = myWebView.capturePicture();

                Picture picture = view.capturePicture();
                Bitmap b = Bitmap.createBitmap(picture.getWidth(), picture.getHeight(), Bitmap.Config.ARGB_8888);
                Canvas c = new Canvas(b);
                picture.draw(c);

                FileOutputStream fos = null;
                try {
                    fos = new FileOutputStream( "/sdcard/"  + "page.pdf" );
                    if ( fos != null ) {
                        b.compress(Bitmap.CompressFormat.JPEG, 100, fos );
                        fos.close();
                    }
                }
                catch( Exception e ) {
                    System.out.println("-----error--"+e);
                }

            }
        });

        myWebView.getSettings().setJavaScriptEnabled(true);

        myWebView.loadUrl("http://www.yahoo.com");
    }

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

【问题讨论】:

  • 它与pdf无关它只是捕获webview并将其保存为图像
  • 正如 Selvin 所说,您捕获的是位图而不是 PDF。
  • 有没有办法可以将捕获的图像存储到 pdf 文件中

标签: android pdf webview


【解决方案1】:

您目前仅捕获图像,它是BitMap,而不是 PDF。

您应该尝试查找/使用可以将 IMG 转换为 PDF 的 3rd 方库。如果找到关于 SO 答案的工作方法:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-27
    • 2014-01-12
    • 1970-01-01
    • 2015-04-14
    • 2012-12-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多