java-如何获取Web View的全部内容以在Android中生成PDF文件?

java-如何获取Web View的全部内容以在Android中生成PDF文件?,第1张

概述我目前正在尝试为我的Android应用程序添加PDF导出功能.这涉及到填充一个Url,将其放入WebView,然后使用来自此处的改编代码将该WebView的内容写入PDF:公共位图viewToBitmap(查看视图){        位图位图=Bitmap.createBitmap(view.getWidth(),view.getHeight(),Bitmap.Con

我目前正在尝试为我的Android应用程序添加pdf导出功能.

这涉及到填充一个Url,将其放入WebVIEw,然后使用来自此处的改编代码将该WebVIEw的内容写入pdf:

公共位图vIEwToBitmap(查看视图){
        位图位图= Bitmap.createBitmap(vIEw.getWIDth(),vIEw.getHeight(),Bitmap.Config.ARGB_8888);
        Canvas canvas = new Canvas(bitmap);
        vIEw.draw(帆布);
        返回位图;
    }

public voID deleteRecursive(file fileOrDirectory) {    if (fileOrDirectory.isDirectory())        for (file child : fileOrDirectory.Listfiles())            deleteRecursive(child);    fileOrDirectory.delete();}public voID bmpTopdfMail(Bitmap bitmap) {    String GVCode = String.valueOf(System.currentTimeMillis() + "_InvoiceTest");    String root = Environment.getExternalStorageDirectory().toString();    file myDir = new file(root + "/Invoices");    if (myDir.exists()) {        deleteRecursive(myDir);    }    myDir.mkdirs();    String fname = GVCode + ".jpg";    file file = new file(myDir, fname);    if (file.exists()) {        deleteRecursive(file);    }    try {        fileOutputStream out = new fileOutputStream(file);        bitmap.compress(Bitmap.CompressFormat.JPEG, 90, out);        out.flush();        out.close();    } catch (Exception e) {        e.printstacktrace();    }    document document = new document();    String input = Environment.getExternalStorageDirectory().toString() + "/Invoices/" + GVCode + ".jpg";    String output = Environment.getExternalStorageDirectory().toString() + "/Invoices/" + GVCode + ".pdf";    String stringPrintDirectory = Environment.getExternalStorageDirectory().toString() + "/Invoices/";    file myDirpdf = new file(stringPrintDirectory);    if (!myDirpdf.exists()) {        myDirpdf.mkdirs();    }    try {        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();    } catch (Exception e) {        e.printstacktrace();    }} 

如何从WebVIEw创建pdf(隐藏部分)?

但是,当生成pdf时,我只会得到
WebVIEw,因此屏幕外的信息已被切断.

如何在WebVIEw中获取整个内容(可见部分)(可见或不可见部分)以从我的AndroID应用程序中导出pdf文件…?

解决方法:

成功加载页面后,尝试使用此方法获取位图.

public Bitmap vIEwToBitmap(WebVIEw v) {    Picture picture = v.capturePicture();    Bitmap  b = Bitmap.createBitmap( picture.getWIDth(),    picture.getHeight(), Bitmap.Config.ARGB_8888);    Canvas c = new Canvas( b );    picture.draw( c );    return b;}

由于在API级别19中不赞成使用capturePicture(),因此请使用

public Bitmap vIEwToBitmap(WebVIEw v) {    float scale = v.getScale(); // Used to capture whole the content    int webVIEwHeight = (int)(v.getContentHeight() * scale);    Bitmap image = Bitmap.createBitmap(v.getWIDth(), webVIEwHeight,            Bitmap.Config.ARGB_8888);    Canvas canvas = new Canvas(image);    v.draw(canvas);    return image;}

使用位图生成pdf.在此之前,请尝试查看位图,以确保pdf生成代码是否有问题或什么!!?

总结

以上是内存溢出为你收集整理的java-如何获取Web View的全部内容以在Android中生成PDF文件?全部内容,希望文章能够帮你解决java-如何获取Web View的全部内容以在Android中生成PDF文件?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/web/1095411.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存