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



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

如何将捕获的位图保存在未使用我的代码的pdf中

有没有办法将网页视图内容保存为 PDF

下面的共享代码

主活动.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;
    }
}

您当前仅捕获图像,该图像是BitMap而不是PDF。

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

  • 图像到 PDF 使用 IText PDF 库

最新更新