Android:无法从 WebView 打印/PDF html 文档(版本:86.0.4240.75)
Posted
技术标签:
【中文标题】Android:无法从 WebView 打印/PDF html 文档(版本:86.0.4240.75)【英文标题】:Android: Unable to Print/PDF html document from WebView (version: 86.0.4240.75) 【发布时间】:2021-01-25 22:22:19 【问题描述】:// Get a PrintManager instance
PrintManager printManager = (PrintManager) getSystemService(Context.PRINT_SERVICE);
// Get a print adapter instance
PrintDocumentAdapter printAdapter = webView.createPrintDocumentAdapter();
// Create a print job with name and adapter instance
String jobName = getString(R.string.app_name) + " Document";
PrintAttributes.Builder builder = new PrintAttributes.Builder();
builder.setMediaSize(PrintAttributes.MediaSize.ISO_A4);
PrintJob printJob = printManager.print(jobName, printAdapter, builder.build());
错误消息:“抱歉,这不起作用。再试一次。”
随着android System WebView(版本:86.0.4240.75)的最新更新,无法从我的html文档webview中使用createPrintDocumentAdapter生成pdf或打印。使用旧版本的Android System Webview,效果很好。
如果有人对此有解决方案,请告诉我们?
【问题讨论】:
我们在我们的应用程序中也看到了同样的失败。但是,在我们的应用程序中,我们提供了一种通过应用程序打印的解决方法,其中我们将创建的 HTML 传递给 Google Chrome 进行打印并通过 javascript 打开打印窗口。即使使用更新的 webview,谷歌浏览器也能够打印。想知道 Chrome 是如何做到的,因为打印控件看起来很相似。 【参考方案1】:此问题已在最新版本的 Chrome/Android System WebView 应用中得到修复。 Google 已经在 Playstore 上发布了更新,我们确认此问题已得到解决。
跟踪问题here
【讨论】:
【参考方案2】:我不确定它是否适用于所有人,我在移动应用上也遇到过这个问题,我所做的是:
-
转到设置并选择应用程序
选择应用程序并从更多选项中选择显示系统进程
搜索Android系统WebView
禁用它并再次启用它
我不知道为什么它会以某种方式降级网页视图版本,之后我发现我的打印功能现在可以工作了,你可以试试看
【讨论】:
我们做了与解决方法相同的事情。但是几天前,我们也针对同样的问题向 chromium web 团队提出了质疑。 Track it here【参考方案3】:我们的 Cordova 应用程序也遇到了同样的问题。我们为 Cordova 使用 pdf-generator 2.1.1。 Pdf 可以在应用程序启动后第一次加载,如果它被关闭并再次打开,我们会得到同样的错误。 如果我完全关闭应用程序并重新启动它,我可以再次打开它。可能是 webview 中的缓存问题或类似的问题。
我想唯一的解决办法是 webview 的新更新,它可以解决问题。 当我尝试将 gmail 应用程序中的电子邮件另存为 pdf 时,有时也会发生该错误。
【讨论】:
以上是关于Android:无法从 WebView 打印/PDF html 文档(版本:86.0.4240.75)的主要内容,如果未能解决你的问题,请参考以下文章
无法从 android webview 打开 google play 商店
当我从 setWebChromeClient 使用时,我无法从 onPageStarted webView 使用 - Android
自 Android 11 (SDK30) 以来,我无法将 HTML 文件从应用程序特定存储加载到 WebView
APPIUM ANDROID 混合应用程序:在混合应用程序中从本机导航到 Web 视图时,无法将驱动程序上下文获取为“WEBVIEW”