【发布时间】:2021-01-04 14:10:09
【问题描述】:
我正在尝试使用模板根据我的数据制作报告。使用 WebView 的 PDF 工作得非常好,直到我的数据大于某个数字(在 for 循环中多 1 个),然后它只产生一个空白页。我在这里检查了所有可能的答案; this、this、this 和 this,但没有成功。
这是我的代码的 sn-p:
Bitmap bitmap = callback.getMapImage();
WebView wv = new WebView(activity);
wv.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
//print
PrintManager printManager = (PrintManager) activity
.getSystemService(Context.PRINT_SERVICE);
String jobName = activity.getString(R.string.app_name) + " Document";
PrintDocumentAdapter printAdapter = wv.createPrintDocumentAdapter(jobName);
printManager.print(jobName, printAdapter, new PrintAttributes.Builder().build());
reference = null;
}
});
PrepareDocumentForPrintTask printTask = new PrepareDocumentForPrintTask(wv, bitmap);
printTask.execute();
并且 html 在 asyncTask 中创建并加载如下:
@Override
protected void onPostExecute(Triple<Boolean, String, File> result) {
activity.runOnUiThread(() -> {
if (result.getFirst()){
wv.loadDataWithBaseURL("", result.getSecond(), "text/html", "UTF-8", null);
reference = wv;
} else
Toast.makeText(activity, result.getSecond(), Toast.LENGTH_LONG).show();
});
}
我添加了 largeHeap="true" 并停用了硬件加速,但仍然没有成功。
知道如何解决这个问题吗?
【问题讨论】: