Webview到PDF忽略作业名称

我试图从KitKat(4.4.4)的webview打印HTML页面,基本上使用Google API文档中提供的示例代码。 因此,我设置了一个打印作业名称如下:

String jobName = getString(R.string.app_name) + " Document"; PrintJob printJob = printManager.print(jobName, printAdapter, new PrintAttributes.Builder().build()); 

我的代码运行良好,页面按预期打印。 即使用户在Android标准打印对话框中select“另存为PDF”选项,代码也会呈现一个漂亮的PDF,用户可以select一个文件名。 在这一点上,我期望Android使用存储在jobName字段中的string作为文件名。 相反,它总是使用webview作为文件名,尽pipe我的代码不包含webview作为string。

有没有办法设置另一个默认名称来存储在我的应用程序中生成的PDF文件?

感谢您的提示…

更新:

我花了一些额外的时间调查这个问题,我发现WebView使用AwPrintDocumentAdapter作为打印适配器,如果适配器是通过调用API文档中build议的createPrintDocumentAdapter()创build的。 然后该类调用PrintDocumentInfo.Builder("webview") ,这似乎是为什么PDF总是被命名为“webview”。 一些研究揭示了AwPrintDocumentAdapter的以下代码片段 :

 @Override public void onLayout(PrintAttributes oldAttributes, PrintAttributes newAttributes, CancellationSignal cancellationSignal, LayoutResultCallback callback, Bundle metadata) { mAttributes = newAttributes; // TODO(sgurun) pass a meaningful string once b/10705082 is resolved PrintDocumentInfo documentInfo = new PrintDocumentInfo .Builder("webview") .build(); // TODO(sgurun) once componentization is done, do layout changes and // generate PDF here, set the page range information to documentinfo // and call onLayoutFinished with true/false depending on whether // layout actually changed. callback.onLayoutFinished(documentInfo, true); } 

因此,这似乎是我的问题的根本原因 – 至less如果代码到达了我的Nexus 4testing设备…最后,处理这个命名问题的最好方法似乎是一个自定义的打印适配器实现。

有没有其他的解决scheme,不需要一个自定义的打印适配器(其中应包含计算页数等代码…)?

Solutions Collecting From Web of "Webview到PDF忽略作业名称"