【问题标题】:Android (4.4 - API 19) App: Print existing PDF without print previewAndroid (4.4 - API 19) 应用程序:打印现有 PDF 而不打印预览
【发布时间】:2018-06-29 06:52:25
【问题描述】:

我不确定这是不是重复的,因为我发现的并不是我想要的。

我有一个应用程序,它有一个用户填写表单的 Activity(带有 textviews 和 edittexts 的表格布局)

在底部有一个打印按钮(截至目前),它使用 itextpdf 生成一个 pdf 文件并将其保存在“/storage/emulated/0/client pqr/pqr.pdf”中

我想要实现的是单击该按钮,生成 PDF,然后将其发送到网络打印机并在没有打印预览的情况下打印。

这可能吗?至少可以打印预览?

我是新手,不熟悉如何实现打印自定义文档 (https://developer.android.com/training/printing/custom-docs.html#print-adapter)。我不确定如何实现打印适配器/管理器。我看到了一些带有代码 sn-p 解决方案的页面,但我不确定它们属于哪个类。

我非常感谢这里的任何帮助,因为我花了几天时间在谷歌上搜索却没有得到任何帮助。

【问题讨论】:

  • “这可能吗?至少可以打印预览?” -- 最后我检查了一下,Android 没有将打印预览作为标准功能。由各个应用程序来提供。除此之外,请参阅this answer
  • 你好@CommonsWare。谢谢回复。我正在尝试在我的项目中实施这个项目。我创建了一个 MyPrintDocumentAdapter,但是我不确定在哪里进行打印调用。据我所知,它应该在 onWrite 方法中完成,但所有示例都显示打印到文件中。如何以及在何处连接到 IP 打印机并进行打印?

标签: android pdf printing


【解决方案1】:

我创建了一个 MyPrintDocumentAdapter,但是我不确定在哪里进行打印调用。据我所知,它应该在 onWrite 方法中完成,但所有示例都显示打印到文件中。如何以及在何处连接到 IP 打印机并进行打印?

PrintDocumentAdapter 和关联的PrintJobs 用于从用户设备上的可用打印机中打印到用户选择的打印机。

因此,最简单的解决方案是安装打印机制造商提供的 Android“打印驱动程序”应用。然后,您可以在该打印机上使用 Android 打印框架(例如,PrintDocumentAdapter)。是否会有打印预览取决于 Android,也可能取决于打印机制造商。

如果打印机制造商没有可让其打印机可用于打印的 Android 应用,您需要:

  • 自己创建a PrintService 可以与这些打印机一起使用(您可以在此处连接到 IP 地址并执行...某些操作...),这样您就可以将 Android 打印框架与这些打印机一起使用打印机,或

  • 完全绕过 Android 的打印框架,只需编写自己的代码,以一种或另一种方式将打印作业发送到打印机。

【讨论】:

  • 我正在尝试使用 HP LaserJet 进行打印。我刚刚拿到了他们的 SDK。我编译了包并导入了类,但是有些对象在 Android Studio 中导致错误。创建了一个 PDFAsset、一个 PrintItem 和一个 PrintJobData。但是,当我收到著名的“无法解析符号 setJobName”错误时,我无法设置作业名称。惠普支持似乎没用,因为我还没有得到答复。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-21
  • 2013-11-12
  • 2013-12-07
  • 2013-02-07
  • 1970-01-01
相关资源
最近更新 更多