隐藏的WebView到PDF - 结果是空白的?

时间:2017-10-02 11:47:51

标签: android pdf android-webview

基本上我们的目标是生成一个PDF报告,然后将其附加到电子邮件中并自动发送(当我用户点击提交时,我使用Mailgun进行此操作正常),而不是PDF显示或出现打印对话框。

这是我到目前为止的代码,它只生成一个空白的PDF。因为我将其用于商业用途,所以我无法使用iText等库。

    WebView web = new WebView(c); // c is context, provided when method called
    web.loadDataWithBaseURL("file:///android_asset/", pdfTemplate, "text/html", "UTF-8", "");
    PrintAttributes.Builder b = new PrintAttributes.Builder()
            .setColorMode(PrintAttributes.COLOR_MODE_COLOR)
            .setMediaSize(PrintAttributes.MediaSize.ISO_A4)
            .setMinMargins(PrintAttributes.Margins.NO_MARGINS)
            .setResolution(new PrintAttributes.Resolution("1", "label", 300, 300));
    PrintedPdfDocument doco = new PrintedPdfDocument(c, b.build());
    PdfDocument.Page p = doco.startPage(1);
    web.draw(p.getCanvas());
    doco.finishPage(p);

如果没有用户看到任何内容,我该怎么做?

1 个答案:

答案 0 :(得分:1)

您可以使用自定义WebViewClient并覆盖" onPageFinished"像这样的方法:

class CustomWebViewClient extends WebViewClient {

    @Override
    public void onPageFinished(WebView view, String url) {
        super.onPageFinished(view, url);
        //do your pdf logic
    }
}

然后在加载URL之前调用它:

web.setWebViewClient(new CustomWebViewClient());