我正在使用 Xamarin.android 并遵循了 this
我想将打印件保存到特定路径而不向用户显示对话屏幕。
如何在不询问用户的情况下说出我想要保存的路径?
我有那个代码:
myWebView = new Android.Webkit.WebView(this.Context);
var printManager = (Android.Print.PrintManager)Forms.Context.GetSystemService(Android.Content.Context.PrintService);
var text = new ContractHTML() { Model = new Model.Model() { img = null } };
myWebView.LoadDataWithBaseURL("file:///android_asset/", text.GenerateString(), "text/html", "UTF-8", null);
string fileName = "MyPrint_" + Guid.NewGuid().ToString() + ".pdf";
var printAdapter = myWebView.CreatePrintDocumentAdapter(fileName);
Android.Print.PrintJob printJob = printManager.Print("MyPrintJob", printAdapter, null);
此代码正在运行并生成 pdf,但它询问用户将其保存在何处,我想将其保存在某个路径中。
这可能吗?
最佳答案
Save pdf without showing the user the print dialogue screen
据我所知,您无法在 Android 中实现此功能。
用户需要能够选择一些配置,例如选择要打印的打印机。因此,当您使用 printManager.Print()
方法时,将显示一个打印对话框。你可以在 android PrintManager Source code 中找到, PrintManager
类是 final(在 C# 中它是密封的),我们不允许覆盖此方法以防止对话框。
当您从 Activity
执行 printManager.Print("MyPrintJob", printAdapter, null)
方法时,它会启动 PrintJob
调出系统打印用户界面。这是由 Android
打印框架完成的,我们不能使用平台 API 静默打印。
AOSP 问题跟踪器上有一个 Unresolved 问题:https://code.google.com/p/android/issues/detail?id=160908 .
关于android - 保存 pdf 而不向用户显示打印对话屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47039263/