0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

StarXpand SDKでテキストを印刷する(SwiftUI)

Posted at

今回はスター精密プリンターの「mC-Label3」を使って、ラベル印刷をしてみます。

準備

まず、プリンターと接続して簡単に印刷するためには、StarXpand SDKをインポートします。

以下は、StarXpandを使用して印刷できる要素の例です。

  • テキスト
  • 画像
  • バーコード
  • QRコード

では早速、プリンターでラベルを印刷するためのコードを書いていきましょう!

テキストを印刷してみる

今回は最も簡単なテキスト印刷をします。

印刷するには本来、プリンターに対しコマンドを送る必要があるのですが、StarXpand SDKはこのコマンドを自動的に生成してくれます。

コマンドを取得するため、主に以下の3クラスを使用します。

CommandBuilder
StarXpandCommand.StarXpandCommandBuilder()
DocumentBuilder
StarXpandCommand.DocumentBuilder()
PrinterBuilder
StarXpandCommand.PrinterBuilder()

上記のクラスを使い、以下の手順でコマンドを取得します。

  1. PrinterBuilderに順次実行したい処理を追加していく
  2. DocumentBuilderPrinterBuilderを追加する
  3. CommandBuilderDocumentBuilderを追加する
  4. .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)

DocumentBuilderPrinterBuilderを追加し、
CommandBuilderDocumentBuilderを追加します。

これでコマンドを取得する準備は完了です。

    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関数にする必要があります。

それではこの処理を実行してみます。
1-1.jpeg
引数で指定したプリンターから、こちらのラベルが印刷されました。

おわりに

今回は最も単純なテキスト印刷を行いました。StarXpand SDKを使用すれば、他にも画像、バーコード、QRコードなど様々な要素を簡単に印刷することができます。
今後も少しずつ記事を追加していきますので、是非参考にしてみてください!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?