我正在使用Xamarin.android,我遵循了这个
我想将打印保存到特定路径而不向用户显示对话框屏幕。
如何在不询问用户的情况下说出我要保存的路径?
我有那个代码:
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,但它询问用户在哪里保存它,我想把它保存在某个路径中。
可能吗?
保存 pdf 而不向用户显示打印对话框屏幕
AFAIK 您无法在 Android 中实现此功能。
用户需要能够选择一些配置,例如选择要在哪个打印机上打印。因此,当您使用printManager.Print()
方法时,将显示一个打印对话框。你会发现在android PrintManager源代码中,PrintManager
类是final的(在C#中它是密封的),我们不允许覆盖此方法以防止对话框。
当您从Activity
执行printManager.Print("MyPrintJob", printAdapter, null)
方法时,它会启动PrintJob
也会调出系统打印 UI。这是通过Android
打印框架完成的,我们不能使用平台 API 静默打印。
AOSP 问题跟踪器上有一个未解决的问题:https://code.google.com/p/android/issues/detail?id=160908。
在广泛搜索之后,我用这个 GitHub 项目来解决这个问题。我能够在用户不知情的情况下静默打印文档。
开发人员似乎能够将一些类添加到android.print
包中以访问私有成员,从而使这成为可能。
https://github.com/UttamPanchasara/PDF-Generator?utm_source=android-arsenal.com&utm_medium=referral&utm_campaign=7355