StarPrinting 0.1.1

StarPrinting 0.1.1

测试已测试
Lang语言 Obj-CObjective C
许可证 MIT
发布上次发布2014年12月

Will Loderhose维护。



  • Will Loderhose 和 Matt Newberry

为 iOS 和 Mac 提供星式打印队列和持久化

概览

StarPrinting 是一个基于 StarMicronics StarIO SDK 构建的 CocoaPod,用于 iOS 和 Mac OS X。它提供了一个健壮且易于使用的框架,用于将打印集成到您的应用程序中。

持久打印队列

您的应用程序连接的每个打印机都保存一个队列,包含所有尝试打印的工作,该队列是持久的,并且只有在应用程序被杀死时才会丢失。从未完成的工作将在后台线程上重试几分钟。如果它们继续失败,它们将在队列中保持暂停状态,直到打印机重新上线。

实时状态更新

每个打印机还有一个心跳,每几秒钟更新一次打印机状态。

可能的打印机状态如下

  • PrinterStatusConnected - 在线且准备打印
  • PrinterStatusConnecting - 正在建立与打印机的连接
  • PrinterStatusDisconnected - 可用且无错误但未连接
  • PrinterStatusLowPaper - 几乎用完纸张
  • PrinterStatusOutOfPaper - 打印机中没有纸张
  • PrinterStatusCoverOpen - 打印机的盖子已打开
  • PrinterStatusConnectionError - 无法建立与打印机的连接
  • PrinterStatusLostConnectionError - 丢失与打印机的连接(可能由于关闭电源或断开网络连接所致)
  • PrinterStatusPrintError - 向打印机发送了无效的打印数据
  • PrinterStatusIncompatible - 打印机与当前版本 StarPrinting 不兼容
  • PrinterStatusUnkownError - 遇到未知错误

安装

您可以将 StarPrinting 安装得像其他任何 CocoaPod 一样。有关安装和使用 CocoaPods 的说明,请参阅 cocoapods.org

Podfile

pod "StarPrinting", "~> 0.1"

使用方法

导入

以下导入语句是您唯一需要的。它将导入从包导入的所有必要的头文件。

#import <StarPrinting/StarPrinting.h>

初始化

初始化打印机的最佳方式是调用类方法 [Printer search:(PrinterSearchBlock)block],它返回一个打印机对象数组。一旦连接到打印机,只需调用类方法 [Printer connectedPrinter] 即可。

搜索

要搜索可用的打印机,使用类搜索方法,并传入一个结果块。

[Printer search:^(NSArray *listOfPrinters) {
    // do something with the list of printers
}];

打印机代理

StarPrinting 还提供了一个打印机代理协议,以便应用程序可以监听状态变化。每个打印机代理必须实现以下方法:

@interface MyClass : NSObject <PrinterDelegate>
- (void)printer:(Printer *)printer didChangeStatus:(PrinterStatus)status
{
    // update UI based on new printer status
}

打印

StarPrinting 使用 XML 文件来存储打印数据。调用任何打印方法时,它会解析 XML,将数据编码为打印机友好的格式,最后发送到打印机打印。示例 XML 文件可以在 StarPrintingExample/samples 文件夹中找到。您可以在这里找到可接受 XML 标签的列表 here

要向打印机发送数据,您必须创建一个 PrintData 对象。 PrintData 是一个包装对象,它有两个属性

  • NSString filePath
  • NSDictionary dictionary

文件路径告诉打印机 XML 文件的位置,字典存储要动态消费到 XML 文件中的变量数据。

打印测试

要打印测试页,只需在打印机上调用 printTest 方法。这是打印机为您创建 PrintData 包装对象的示例。测试页 xml 文件包含在 samples 文件夹中。

[[Printer connectedPrinter] printTest];

打印静态 XML 文件

要打印 XML 文件,您需要创建一个 PrintData 对象并将其传递给打印方法。对于静态 XML 文件,只需将字典传递 nil

NSString *filePath = [NSBundle mainBundle] pathForResource:@"static_receipt" ofType:@"xml"];

PrintData *printData = [[PrintData alloc] initWithDictionary:nil atFilePath:filePath];
[[Printer connectedPrinter] print:printData];

打印动态 XML 文件

对于动态 XML 文件,您需要包含一个包含您想要传递的每个变量的字典。

NSString *filePath = [NSBundle mainBundle] pathForResource:@"dynamic_receipt" ofType:@"xml"];

NSDictionary *dictionary = @{
                              @"{{day}}" : self.day,
                              @"{{month}}" : self.month,
                              @"{{year}}" : self.year
                            };

PrintData *printData = [[PrintData alloc] initWithDictionary:dictionary atFilePath:filePath];
[[Printer connectedPrinter] print:printData];

在 XML 文件中,变量使用双大括号语法创建:{{var}}

以下是一个需要日期、月份和年份变量的示例 XML 文件

<print>
<text><bold>The current day is: </bold></text>
<text>{{month}}-{{day}}-{{year}}</text>
</print>

可打印协议

StarPrinting 提供的最强大的工具之一是能够从任何 Objective-C 类遵守 Printable 协议。所有遵守 Printable 的类都必须实现 printedFormat 方法。该方法简单返回一个 PrintData 对象。当在可打印类的实例上调用 print 时,它将自动调用 printedFormat 并将数据发送到打印机。

遵守协议

@interface MyDateClass : NSObject <Printable>

实现方法

- (PrintData *)printedFormat
{
NSString *filePath = [NSBundle mainBundle] pathForResource:@"dynamic_receipt" ofType:@"xml"];

NSDictionary *dictionary = @{
                              @"{{day}}" : self.day,
                              @"{{month}}" : self.month,
                              @"{{year}}" : self.year
                            };

return [[PrintData alloc] initWithDictionary:dictionary atFilePath:filePath];
}

在对象上调用打印

[myDateObject print];
[myDateObject print:printer];

XML 标签列表

以下都是在 XML 文件中包含的可接受标签。每一个都有长名和简称。

  • <text> <t> - 任何可打印文本(所有其他格式化标签都必须嵌套在其中一个中)
  • <bold> <b> - 粗体文本
  • <underline> <ul> - 下划线文本
  • <upperline> <upl> - 上部线文本
  • <large> <lg> - 大文字
  • <invertcolor> <ic> - 反转颜色
  • <center> <c> - 居中对齐
  • <left> <l> - 左对齐
  • <right> <r> - 右对齐
  • <barcode /> <bc /> - 条形码
  • <tab /> <tb /> - 制表符
  • <dashednewline /> <dl /> - 虚线换行
  • <newline /> <nl /> - 换行

示例

包含一个示例应用,展示如何连接打印机,根据打印机状态显示错误消息以及如何打印自定义数据。

贡献者

StarPrinting是由Matt NewberryWill Loderhose创建的。

许可证

StarPrinting遵循MIT许可证。请参阅LICENSE文件以获取更多信息。