今回はスター精密プリンターの「mC-Label3」を使って、ラベル印刷をしてみます。
準備
まず、プリンターと接続して簡単に印刷するためには、StarXpand SDKをインポートします。
以下は、StarXpandを使用して印刷できる要素の例です。
- テキスト
- 画像
- バーコード
- QRコード
では早速、プリンターでラベルを印刷するためのコードを書いていきましょう!
テキストを印刷してみる
今回は最も簡単なテキスト印刷をします。
印刷するには本来、プリンターに対しコマンドを送る必要があるのですが、StarXpand SDKはこのコマンドを自動的に生成してくれます。
コマンドを取得するため、主に以下の3クラスを使用します。
StarXpandCommand.StarXpandCommandBuilder()
StarXpandCommand.DocumentBuilder()
StarXpandCommand.PrinterBuilder()
上記のクラスを使い、以下の手順でコマンドを取得します。
-
PrinterBuilder
に順次実行したい処理を追加していく -
DocumentBuilder
にPrinterBuilder
を追加する -
CommandBuilder
にDocumentBuilder
を追加する -
.getCommands()
でコマンドを取得する
実際に、テキストを印刷するコマンドを取得して、印刷してみましょう。
func printLabel(_ printer: StarPrinter) async{
let printerBuilder = StarXpandCommand.PrinterBuilder()
.actionPrintText("Hello, World1")
.actionFeedLine(1)
.actionPrintText("Hello, World2")
.actionFeedLine(1)
.actionPrintText("Hello, World3")
.actionFeedLine(1)
.actionCut(.partial)
let documentBuilder = StarXpandCommand.DocumentBuilder()
.addPrinter(printerBuilder)
let commandBuilder = StarXpandCommand.StarXpandCommandBuilder()
.addDocument(documentBuilder)
do{
try await printer.open()
try await printer.print(command: commandBuilder.getCommands())
}
catch{
print("print label failed")
}
await printer.close()
}
順に説明していきます。
let printerBuilder = StarXpandCommand.PrinterBuilder()
.actionPrintText("Hello, World1")
.actionFeedLine(1)
.actionPrintText("Hello, World2")
.actionFeedLine(1)
.actionPrintText("Hello, World3")
.actionFeedLine(1)
.actionCut(.partial)
PrinterBuilder
で、印刷する内容を定義していきます。
.actionFeedLine(1)
で行を送り、改行します。
.actionCut(.partial)
で最後にパーシャルカットをします。
let documentBuilder = StarXpandCommand.DocumentBuilder()
.addPrinter(printerBuilder)
let commandBuilder = StarXpandCommand.StarXpandCommandBuilder()
.addDocument(documentBuilder)
DocumentBuilder
にPrinterBuilder
を追加し、
CommandBuilder
にDocumentBuilder
を追加します。
これでコマンドを取得する準備は完了です。
do{
try await printer.open()
try await printer.print(command: commandBuilder.getCommands())
}
catch{
print("print label failed")
}
await printer.close()
上記は、実際に印刷するコードです。
どのプリンターに印刷させるかは、引数のStarPrinterで定義します。
※周囲のプリンターを検索してStarPrinter型として取得するには、ディスカバリ機能を使用します。
.open()
でポートに接続し、
.print(command:)
で取得したコマンドを使って印刷を実行します。
印刷が終わったら.close()
でポートを閉じます。
これらは全て非同期処理なのでawait
をつける必要があり、これらの処理を含む関数もasync関数にする必要があります。
それではこの処理を実行してみます。
引数で指定したプリンターから、こちらのラベルが印刷されました。
おわりに
今回は最も単純なテキスト印刷を行いました。StarXpand SDKを使用すれば、他にも画像、バーコード、QRコードなど様々な要素を簡単に印刷することができます。
今後も少しずつ記事を追加していきますので、是非参考にしてみてください!