我正在使用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,但它要求用户将其保存在哪里,我想将其保存在某个路径中。
有可能吗?
答案 0 :(得分:1)
保存pdf而不向用户显示打印对话框
AFAIK您无法在Android中实现此功能。
用户需要能够选择一些配置,例如选择要打印的打印机。因此,当您使用printManager.Print()
方法时,将显示打印对话框。您可以发现在安卓PrintManager Source code中,PrintManager
类是最终的(在C#中它是密封的),我们不允许覆盖此方法以阻止对话。
当您从printManager.Print("MyPrintJob", printAdapter, null)
执行Activity
方法时,它会启动PrintJob
,它也会启动系统打印UI。这是由Android
打印框架完成的,我们无法使用平台API静默打印。
AOSP问题跟踪器有一个未解决的问题:https://code.google.com/p/android/issues/detail?id=160908。
答案 1 :(得分:0)
在广泛搜索之后,我使用了这个GitHub项目来解决此问题。我能够在用户不知情的情况下静默打印文档。
开发人员似乎可以在android.print
包中添加一些类来访问私有成员,从而使之成为可能。