基本上我们的目标是生成一个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);
如果没有用户看到任何内容,我该怎么做?
答案 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());