【问题标题】:Hidden WebView to PDF - result is blank?将 WebView 隐藏到 PDF - 结果为空白?
【发布时间】:2018-03-13 11:42:17
【问题描述】:

基本上,目的是生成一个 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);

在用户看到任何东西的情况下,我可以做些什么来完成这项工作?

【问题讨论】:

  • “因为我将它用于商业用途,所以我无法为此使用 iText 等库”——iText 提供commercial licensing。在主要搜索引擎上的 android library generate pdf 上搜索各种其他库和服务。关于您的问题,WebView 将其内容加载到后台线程(因此您尝试过早打印)。另外,在您的情况下,将 PDF 文件打包到资产中会简单得多,而不是打包 HTML 并尝试生成 PDF。
  • 我同意您的观点,但是有多种原因导致我们无法使用付费商业许可证。有什么办法可以等待加载 WebView 然后触发 PDF 代码?如果我要将 PDF 打包到资产中,我将如何编辑内容 - PDF 内容每次都会更改,因为它将填充来自应用程序的数据,之前我使用 string.replace 替换占位符的。
  • " 有什么办法可以等待 WebView 被加载然后触发 PDF 代码?" -- 根据您的 HTML,this answer 中概述的 WebViewClient 方法应该可以工作。这不处理故意异步工作(例如,AJAX)。 “我将如何编辑内容” - 哎呀,对不起,我误读了您问题中的代码。

标签: android pdf android-webview


【解决方案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());

【讨论】:

  • 谢谢 - 创建它,移动所有 PDF 和电子邮件逻辑,代码已触发,但不幸的是它仍然是空白的。编辑:我确实确保在设置客户端后加载 URL。
猜你喜欢
  • 2020-12-31
  • 1970-01-01
  • 2013-06-26
  • 2017-08-21
  • 2015-05-30
  • 1970-01-01
  • 1970-01-01
  • 2018-06-19
  • 1970-01-01
相关资源
最近更新 更多