保存 pdf 而不向用户显示打印对话框屏幕



我正在使用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

最新更新