【问题标题】:Save pdf without showing the user the print dialogue screen保存 pdf 而不向用户显示打印对话屏幕
【发布时间】:2023-03-16 15:45:02
【问题描述】:

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

有可能吗?

【问题讨论】:

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


    【解决方案1】:

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

    AFAIK,您无法在 Android 中实现此功能。

    用户需要能够选择一些配置,例如选择要打印的打印机。因此,当您使用printManager.Print() 方法时,将显示一个打印对话框。你会发现在android中PrintManager Source code,PrintManager类是final的(在C#中它是密封的),我们不允许重写这个方法来阻止对话框。

    当您从Activity 执行printManager.Print("MyPrintJob", printAdapter, null) 方法时,它会启动PrintJob 并且它会调出系统打印UI。这是由Android 打印框架完成的,我们不能使用平台API 静默打印。

    AOSP 问题跟踪器上有一个未解决的问题:https://code.google.com/p/android/issues/detail?id=160908

    【讨论】:

    • Shen 不,实际上我能够创建 printAdapter 的覆盖,并且可以创建没有打印对话框的 pdf 文件,但这只会节省一小部分视图,更准确地说,我之前显示了一个 WebView并且只保存我正在查看的部分,其余的只是一个空白页面。所以我认为这是可能的,但还不能到达那里
    • @micaelcunha,我认为重新发明整辆自行车以避免对话不是一个好主意。
    • @YorkShen,这与好坏无关,这完全取决于客户的要求,您可以做或只是通过。顺便说一句,那里有现实生活中的应用程序在做这项工作,我们不知道他们如何准确地处理它,或者该解决方案用于工业用途(不适用于小型企业)。
    【解决方案2】:

    经过广泛搜索,我使用这个 GitHub 项目来解决这个问题。我能够在用户不知情的情况下静默打印文档。

    似乎开发人员能够将一些类添加到 android.print 包中以访问私有成员,从而使这成为可能。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多