如何获取Web View的全部内容以在Android中生成PDF文件? [英] how to get whole content of Web View to generate PDF file in android?

查看:71
本文介绍了如何获取Web View的全部内容以在Android中生成PDF文件?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I'm Currently attempting to include a PDF export feature for my Android Application.

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

This involves populating a Url, putting that into a WebView, then writing the contents of that WebView to a PDF using adapted code from here:

公共位图viewToBitmap(View view){ 位图位图= Bitmap.createBitmap(view.getWidth(),view.getHeight(),Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(bitmap); view.draw(画布); 返回位图; }

public Bitmap viewToBitmap(View view) { Bitmap bitmap = Bitmap.createBitmap(view.getWidth(), view.getHeight(), Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(bitmap); view.draw(canvas); return bitmap; }

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?

How to create PDF from WebView, which is hidden part?

但是,当生成PDF时,我只能看到 WebView,因此屏幕外的信息被切断了.

However when the PDF is generated, I am only getting the visible area of the WebView, so information off-screen is being cut off.

如何在WebView中获取诸如(可见部分或不可见部分)之类的全部内容,以从我的Android应用程序中导出PDF文件...?

How to get Whole Content like (Visible or not Visible Part) in WebView to export PDF File From My Android Application...?

推荐答案

我找到了一个解决方案,虽然不是很好,但是可以正常工作:

I found a solution, not so elegant but working:

    wb.measure(View.MeasureSpec.makeMeasureSpec(
                    View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED),
            View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED));
    wb.layout(0, 0, wb.getMeasuredWidth(), wb.getMeasuredHeight());
    PdfDocument document = new PdfDocument();
    int pageNumber = 1;
    PdfDocument.PageInfo pageInfo = new PdfDocument.PageInfo.Builder(wb.getMeasuredWidth(),
            wb.getMeasuredHeight(), pageNumber).create();
    PdfDocument.Page page = document.startPage(pageInfo);
    //wb.draw(page.getCanvas());
    wb.draw(page.getCanvas());
    document.finishPage(page);

这将创建一个所需的PDF页面,以适合整个WebView. 希望有帮助!

This creates a PDF page as wide as necessary to fit the whole WebView. Hope this help!

这篇关于如何获取Web View的全部内容以在Android中生成PDF文件?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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