2012-05-07 71 views
2

我创建了一个应用程序,我想运行和打印报告(如水晶报告到.net)。什么是最简单的方法来做到这一点?更具体地说,我创建了一个应用程序,用户可以在他的客户处创建发票并在蓝牙打印机上打印它们。有没有像android的水晶报告一样简单的方法?我试图使用水晶报告进行日食,但这些库不能在android上工作(至少我不知道如何)。在android上运行并打印报告

回答

3

首先,Android没有内置或本机打印功能,只是因为Android没有打印机的概念。

但是,您可以使用第三方库。

要正确回答您的问题,您必须指定您的应用程序支持哪些Android版本。因为一些第三方库仅支持特定版本的Android。

除了在应用程序中包含第三方打印库之外,还可以发送带有要打印的数据的广播意图,并且根据用户设备上安装的应用程序,用户可以选择支持打印您在意图中发送的数据类型的应用程序。

您也可以使用Google的新云打印服务。这将是我更喜欢的选择,但要实际打印到物理打印机,用户需要一台桌面PC,服务器或Mac,它们或者连接了打印机,或者安装并配置了具有网络功能的打印机。在这一点上,这可能是你最好的选择。

这是一个很难解决的问题,有几个原因。首先,您需要弄清楚要打印的内容,您需要以可打印的方式进行格式化(PDF,PostScript或ASCII仅举几例)。接下来,您需要弄清楚是否要支持打印不支持蓝牙功能的打印机,因此如果您打算支持打印到支持网络的打印机,则必须与WLAN相同的LAN/VLAN Android设备已连接并且需要禁用AP隔离。如果您计划支持共享的Windows打印机,Mac OS X Bonjour打印机共享或Zeroconf Linux打印机共享,则您需要找到支持库并实现搜索各种网络共享的方法,然后选择并存储网络共享打印到。

由于您计划支持打印到支持蓝牙的打印机;那么有几个Ice Cream Sandwich和Honeycomb发行版可以与蓝牙打印机配对(Android版本需要3.0或3.1+以上[我不完全确定在Honeycomb的SDK级别实现了蓝牙打印协议]和4.0.3+)。至于实际格式化要通过蓝牙打印的数据,我不确定可以打印什么以及使用哪些蓝牙版本或协议。今天上午我会做一些进一步的研究,我会回复我提供的信息。

+0

谢谢你的回答。我开始为2.1开发,但如果必须的话,我没有问题去4.0.3+。我不使用云,因为用户将脱机工作。他们的设备不会连接到互联网。他们将成为拜访客户的司机。我想从sqlite打印发票。这就是为什么我搜索像水晶报告这样的解决方案。 – apant

+0

尼斯详细解答JBDynamics。请原谅我的无知,但假设您在第三方组件中调用了“打印”功能,那么它所使用的格式将不会被预先确定?我想我的错误是假设这些库甚至可以实现一种打印到Android的方式吗?意思是,如果他们不是在本地执行,你必须将你的数据按摩到PDF/PostScript/ASCII /等。那么将它发送到云端或打印计划的任何地方? –