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

时间:2017-10-31 15:39:40

标签: android pdf xamarin xamarin.forms xamarin.android

我正在使用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,但它要求用户将其保存在哪里,我想将其保存在某个路径中。

有可能吗?

2 个答案:

答案 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包中添加一些类来访问私有成员,从而使之成为可能。

https://github.com/UttamPanchasara/PDF-Generator?utm_source=android-arsenal.com&utm_medium=referral&utm_campaign=7355