StarXpand SDK for iOS / Android 開発者向けマニュアル Ver. 1.14.0

最終更新日: 2026年 9月 15日

印刷データを作成する

手順や参照先はOSによって異なります。表示するOSを選択してください。

iOS Android


印刷データを作成する処理 について、StarPRNT SDKとStarXpand SDKの構成を説明します。

両SDKの違いを確認しStarXpand SDKへの移行を行ってください。

StarPRNT SDK

  • 1. プリンターのエミュレーションを判定します。
  • 2. ISCBBuilderクラスのインスタンスを作成します。
  • 3. 印刷データの先頭でbeginDocument()メソッドを実行します。
  • 4. 印刷する文字や画像の他、文字エンコーディングや国際文字の指定などのパラメータ、用紙カット指示などをappend...メソッドで追加していきます。
  • 5. 最後にendDocument()メソッドを実行します。
  • 6. commandsプロパティで印刷データを取得します。
  • 7. 取得した印刷データを、SMPortクラスのwrite()メソッドでプリンターに送信します。

サンプルコード(GitHub)
ページ下部に実装例があります。



StarXpand SDK

  • 1. StarXpandCommandBuilderクラスのインスタンスを作成します。
  • 2. StarXpandCommandBuilderクラスのaddDocument()メソッドを実行します。
    引数にはDocumentBuilderクラスのインスタンスを生成して指定します。
  • 3. 2.で生成したStarXpandCommandBuilderインスタンスのaddPrinter()メソッドを実行します。
    引数にはPrinterBuilderクラスのインスタンスを生成して指定します。
  • 4. 3.で生成したPrinterBuilderインスタンスの以下のメソッドを使用して印刷内容や装飾などを追加していきます。
    印刷するテキスト、バーコード、用紙カットなどの印刷処理: action...()メソッド (例: actionPrintText())
    国際文字、下線、中央寄せなどのパラメータ: style...()メソッド (例: styleCharacterSpace())
    PrinterBuilderに子要素のPrinterBuilderを追加: add()メソッド
  • 5. getCommands()メソッドで印刷データを取得します。
  • 6. 取得した印刷データをprint(command:)メソッドでプリンターに送信します。

サンプルコード(GitHub)
ページ下部に実装例があります。



両SDKの比較

StarPRNT SDK StarXpand SDK
プリンターエミュレーション [1] 指定する 自動判定
文字エンコード 指定する 自動判定
装飾の解除 [2] 明示的に行う 自動
印刷データ バイナリ テキスト
テンプレート印刷 非対応 対応
ブラックマーク 裏面のみ 表面・裏面対応

[1] StarXpand SDKではプリンターエミュレーションが自動的に判定されるため、複数のプリンターモデルをサポートする場合でも、モデルごとに明示的にエミュレーションを指定する必要はありません。

[2] StarPRNT SDKでは、文字の装飾などを行った場合、装飾の解除も明示的に行う必要があります。 StarXpand SDKでは、PrinterBuilderを親子の階層構造にでき、子で適用した装飾は親に影響しないため、装飾は自動的に解除されます。




実装例

StarPRNT SDK

private func createPrinterCommand(emulation: StarIoExtEmulation, utf8: Bool ) -> Data {

        let builder: ISCBBuilder = StarIoExt.createCommandBuilder(emulation)
        
        builder.beginDocument()
        
        if let logo = UIImage(named: "logo_01") {
            builder.appendBitmap(logo, diffusion: false, width: 406, bothScale: true)
        }
        builder.append(SCBInternationalType.USA)
        
        let encoding: String.Encoding
        
        if utf8 == true {
            encoding = String.Encoding.utf8
            
            builder.append(SCBCodePageType.UTF8)
        }
        else {
            encoding = String.Encoding.ascii
            
            builder.append(SCBCodePageType.CP998)
        }
        
        builder.appendCharacterSpace(0)
        
        builder.appendAlignment(SCBAlignmentPosition.center)
        builder.append(("Star Clothing Boutique\n" +
                        "123 Star Road\n" +
                        "City, State 12345\n" +
                        "\n").data(using: encoding))
        
        builder.appendAlignment(SCBAlignmentPosition.left)
        builder.append(("Date:MM/DD/YYYY    Time:HH:MM PM\n" +
                        "--------------------------------\n" +
                        "\n").data(using: encoding))
        
        builder.appendEmphasis(true)
        builder.append(("SALE \n").data(using: encoding))
        builder.appendEmphasis(false)
        
        builder.append(("SKU         Description    Total\n" +
                        "300678566   PLAIN T-SHIRT  10.99\n" +
                        "300692003   BLACK DENIM    29.99\n" +
                        "300651148   BLUE DENIM     29.99\n" +
                        "300642980   STRIPED DRESS  49.99\n" +
                        "300638471   BLACK BOOTS    35.99\n" +
                        "\n" +
                        "Subtotal                  156.95\n" +
                        "Tax                         0.00\n" +
                        "--------------------------------\n").data(using: encoding))
        builder.append(("Total     ").data(using: encoding))
        
        builder.appendMultiple(2,height:2)
        builder.append(("   $156.95\n").data(using: encoding))
        builder.appendMultiple(1,height:1)
        
        builder.append(("--------------------------------\n" +
                        "\n" +
                        "Charge\n" +
                        "156.95\n" +
                        "Visa XXXX-XXXX-XXXX-0123\n" +
                        "\n").data(using: encoding))
        
        builder.appendInvert(true)
        builder.append(("Refunds and Exchanges\n").data(using: encoding))
        builder.appendInvert(false)
        
        builder.append(("Within ").data(using: encoding))
        
        builder.appendUnderLine(true)
        builder.append(("30 days").data(using: encoding))
        builder.appendUnderLine(false)
        
        builder.append((" with receipt\n" +
                        "And tags attached\n" +
                        "\n").data(using: encoding))
        
        builder.appendAlignment(SCBAlignmentPosition.center)
        builder.appendBarcodeData("0123456".data(using: String.Encoding.ascii), symbology: SCBBarcodeSymbology.JAN8, width: SCBBarcodeWidth.mode2, height: 40, hri: true)
        
        builder.appendLineFeed(1)
        builder.appendQrCodeData("Hello World.\n".data(using: String.Encoding.ascii), model: SCBQrCodeModel.no1, level: SCBQrCodeLevel.L , cell: 8)
        
        builder.appendCutPaper(SCBCutPaperAction.partialCutWithFeed)
        builder.endDocument()
        
        let command = builder.commands.copy() as! Data
        return command
    }

StarXpand SDK

    private func createPrinterCommand() -> String {
	guard let logo = UIImage(named: "logo_01") else {
            print("Failed to load \"logo_01.png\".")
            return ""
        }
        
        let builder = StarXpandCommand.StarXpandCommandBuilder()
        _ = builder.addDocument(StarXpandCommand.DocumentBuilder()
            .addPrinter(StarXpandCommand.PrinterBuilder()
                .actionPrintImage(StarXpandCommand.Printer.ImageParameter(image: logo, width: 406))
                .styleInternationalCharacter(.usa)
                .styleCharacterSpace(0)
                .styleAlignment(.center)
                .actionPrintText("Star Clothing Boutique\n" +
                                 "123 Star Road\n" +
                                 "City, State 12345\n" +
                                 "\n")
                .styleAlignment(.left)
                .actionPrintText("Date:MM/DD/YYYY    Time:HH:MM PM\n" +
                                 "--------------------------------\n" +
                                 "\n")
                .add(
                    StarXpandCommand.PrinterBuilder()
                        .styleBold(true)
                        .actionPrintText("SALE \n")
                    )
                .actionPrintText("SKU         Description    Total\n" +
                                 "300678566   PLAIN T-SHIRT  10.99\n" +
                                 "300692003   BLACK DENIM    29.99\n" +
                                 "300651148   BLUE DENIM     29.99\n" +
                                 "300642980   STRIPED DRESS  49.99\n" +
                                 "300638471   BLACK BOOTS    35.99\n" +
                                 "\n" +
                                 "Subtotal                  156.95\n" +
                                 "Tax                         0.00\n" +
                                 "--------------------------------\n")
                .actionPrintText("Total     ")
                .add(
                    StarXpandCommand.PrinterBuilder()
                        .styleMagnification(StarXpandCommand.MagnificationParameter(width: 2, height: 2))
                        .actionPrintText("   $156.95\n")
                    )
                .actionPrintText("--------------------------------\n" +
                                 "\n" +
                                 "Charge\n" +
                                 "156.95\n" +
                                 "Visa XXXX-XXXX-XXXX-0123\n" +
                                 "\n")
                .add(
                    StarXpandCommand.PrinterBuilder()
                        .styleInvert(true)
                        .actionPrintText("Refunds and Exchanges\n")
                    )
                .actionPrintText("Within ")
                .add(
                    StarXpandCommand.PrinterBuilder()
                        .styleUnderLine(true)
                        .actionPrintText("30 days")
                    )
                .actionPrintText(" with receipt\n" +
                                 "And tags attached\n" +
                                 "\n")
                .styleAlignment(.center)
                .actionPrintBarcode(
                    StarXpandCommand.Printer.BarcodeParameter(content: "0123456", symbology: .jan8)
                        .setBarDots(3)
                        .setHeight(5)
                        .setPrintHRI(true)
                )
                .actionFeedLine(1)
                .actionPrintQRCode(
                    StarXpandCommand.Printer.QRCodeParameter(content: "Hello World.\n")
                        .setLevel(.l)
                        .setCellSize(8)
                )
                .actionCut(StarXpandCommand.Printer.CutType.partial)
            )
        )
        return builder.getCommands()
    }

各APIのStarPRNT SDKとStarXpand SDKへの対応状況は、対応API一覧をご確認ください。

印刷データを作成する処理 について、StarPRNT SDKとStarXpand SDKの構成を説明します。

両SDKの違いを確認しStarXpand SDKへの移行を行ってください。

StarPRNT SDK

  • 1. プリンターのエミュレーションを判定します。
  • 2. ICommandBuilderクラスのインスタンスを作成します。
  • 3. 印刷データの先頭でbeginDocument()メソッドを実行します。
  • 4. 印刷する文字や画像の他、文字エンコーディングや国際文字の指定などのパラメータ、用紙カット指示などをappend...メソッドで追加していきます。
  • 5. 最後にendDocument()メソッドを実行します。
  • 6. getCommands()メソッドで印刷データを取得します。
  • 7. 取得した印刷データを、StarIOPortクラスのwritePort()メソッドでプリンターに送信します。

サンプルコード(GitHub)
ページ下部に実装例があります。



StarXpand SDK

  • 1. StarXpandCommandBuilderクラスのインスタンスを作成します。
  • 2. StarXpandCommandBuilderクラスのaddDocument()メソッドを実行します。
    引数にはDocumentBuilderクラスのインスタンスを生成して指定します。
  • 3. 2.で生成したStarXpandCommandBuilderインスタンスのaddPrinter()メソッドを実行します。
    引数にはPrinterBuilderクラスのインスタンスを生成して指定します。
  • 4. 3.で生成したPrinterBuilderインスタンスの以下のメソッドを使用して印刷内容や装飾などを追加していきます。
    印刷するテキスト、バーコード、用紙カットなどの印刷処理: action...()メソッド (例: actionPrintText())
    国際文字、下線、中央寄せなどのパラメータ: style...()メソッド (例: styleCharacterSpace())
    PrinterBuilderに子要素のPrinterBuilderを追加: add()メソッド
  • 5. getCommands()メソッドで印刷データを取得します。
  • 6. 取得した印刷データをprintAsync(command)メソッドでプリンターに送信します。

サンプルコード(GitHub)
ページ下部に実装例があります。



両SDKの比較

StarPRNT SDK StarXpand SDK
プリンターエミュレーション [1] 指定する 自動判定
文字エンコード 指定する 自動判定
装飾の解除 [2] 明示的に行う 自動
印刷データ バイナリ テキスト
テンプレート印刷 非対応 対応
ブラックマーク 裏面のみ 表面・裏面対応

[1] StarXpand SDKではプリンターエミュレーションが自動的に判定されるため、複数のプリンターモデルをサポートする場合でも、モデルごとに明示的にエミュレーションを指定する必要はありません。

[2] StarPRNT SDKでは、文字の装飾などを行った場合、装飾の解除も明示的に行う必要があります。 StarXpand SDKでは、PrinterBuilderを親子の階層構造にでき、子で適用した装飾は親に影響しないため、装飾は自動的に解除されます。




実装例

StarPRNT SDK

private fun createPrinterCommand(
    emulation: StarIoExt.Emulation,
    utf8: Boolean,
    context: Context
): ByteArray {
    val builder = StarIoExt.createCommandBuilder(emulation)
    builder.beginDocument()

    val logo = BitmapFactory.decodeResource(context.resources, R.drawable.logo_01)
    builder.appendBitmap(logo, false, 406, true)

    builder.appendInternational(ICommandBuilder.InternationalType.USA)

    val encoding = if (utf8) {
        builder.appendCodePage(ICommandBuilder.CodePageType.UTF8)
        Charsets.UTF_8
    } else {
        builder.appendCodePage(ICommandBuilder.CodePageType.CP998)
        Charsets.US_ASCII
    }

    builder.appendCharacterSpace(0)
    builder.appendAlignment(ICommandBuilder.AlignmentPosition.Center)
    builder.append(
        "Star Clothing Boutique\n123 Star Road\nCity, State 12345\n\n".toByteArray(
            encoding
        )
    )

    builder.appendAlignment(ICommandBuilder.AlignmentPosition.Left)
    builder.append(
        "Date:MM/DD/YYYY    Time:HH:MM PM\n--------------------------------\n\n".toByteArray(
            encoding
        )
    )

    builder.appendEmphasis(true)
    builder.append("SALE \n".toByteArray(encoding))
    builder.appendEmphasis(false)

    builder.append((
            "SKU         Description    Total\n" +
            "300678566   PLAIN T-SHIRT  10.99\n" +
            "300692003   BLACK DENIM    29.99\n" +
            "300651148   BLUE DENIM     29.99\n" +
            "300642980   STRIPED DRESS  49.99\n" +
            "300638471   BLACK BOOTS    35.99\n" +
            "\n" +
            "Subtotal                  156.95\n" +
            "Tax                         0.00\n" +
            "--------------------------------\n").toByteArray(encoding)
    )
    builder.append("Total     ".toByteArray(encoding))

    builder.appendMultiple(2, 2)
    builder.append("   $156.95\n".toByteArray(encoding))
    builder.appendMultiple(1, 1)

    builder.append((
            "--------------------------------\n" +
            "\n" +
            "Charge\n" +
            "156.95\n" +
            "Visa XXXX-XXXX-XXXX-0123\n" +
            "\n").toByteArray(encoding)
    )

    builder.appendInvert(true)
    builder.append("Refunds and Exchanges\n".toByteArray(encoding))
    builder.appendInvert(false)

    builder.append("Within ".toByteArray(encoding))
    builder.appendUnderLine(true)
    builder.append("30 days".toByteArray(encoding))
    builder.appendUnderLine(false)
    builder.append(" with receipt\nAnd tags attached\n\n".toByteArray(encoding))

    builder.appendAlignment(ICommandBuilder.AlignmentPosition.Center)
    builder.appendBarcode(
        "0123456".toByteArray(Charsets.US_ASCII),
        ICommandBuilder.BarcodeSymbology.JAN8,
        ICommandBuilder.BarcodeWidth.Mode2,
        40,
        true
    )

    builder.appendLineFeed(1)
    builder.appendQrCode(
        "Hello World.\n".toByteArray(Charsets.US_ASCII),
        ICommandBuilder.QrCodeModel.No1,
        ICommandBuilder.QrCodeLevel.L,
        8
    )

    builder.appendCutPaper(ICommandBuilder.CutPaperAction.PartialCutWithFeed)
    builder.endDocument()
    return builder.commands
}

StarXpand SDK

    private fun createPrinterCommand(): String {
    val logo = BitmapFactory.decodeResource(resources, R.drawable.logo_01)

    val builder = StarXpandCommandBuilder()
    builder.addDocument(
        DocumentBuilder()
            .addPrinter(
                PrinterBuilder()
                    .actionPrintImage(ImageParameter(logo, 406))
                    .styleInternationalCharacter(InternationalCharacterType.Usa)
                    .styleCharacterSpace(0.0)
                    .styleAlignment(com.starmicronics.stario10.starxpandcommand.printer.Alignment.Center)
                    .actionPrintText(
                        "Star Clothing Boutique\n" +
                        "123 Star Road\n" +
                        "City, State 12345\n" +
                        "\n",
                    ).styleAlignment(com.starmicronics.stario10.starxpandcommand.printer.Alignment.Left)
                    .actionPrintText(
                        "Date:MM/DD/YYYY    Time:HH:MM PM\n" +
                        "--------------------------------\n" +
                        "\n",
                    ).add(
                        PrinterBuilder()
                            .styleBold(true)
                            .actionPrintText("SALE\n"),
                    ).actionPrintText(
                        "SKU         Description    Total\n" +
                        "300678566   PLAIN T-SHIRT  10.99\n" +
                        "300692003   BLACK DENIM    29.99\n" +
                        "300651148   BLUE DENIM     29.99\n" +
                        "300642980   STRIPED DRESS  49.99\n" +
                        "300638471   BLACK BOOTS    35.99\n" +
                        "\n" +
                        "Subtotal                  156.95\n" +
                        "Tax                         0.00\n" +
                        "--------------------------------\n",
                    ).actionPrintText("Total     ")
                    .add(
                        PrinterBuilder()
                            .styleMagnification(MagnificationParameter(2, 2))
                            .actionPrintText("   $156.95\n"),
                    ).actionPrintText(
                        "--------------------------------\n" +
                        "\n" +
                        "Charge\n" +
                        "156.95\n" +
                        "Visa XXXX-XXXX-XXXX-0123\n" +
                        "\n",
                    ).add(
                        PrinterBuilder()
                            .styleInvert(true)
                            .actionPrintText("Refunds and Exchanges\n"),
                    ).actionPrintText("Within ")
                    .add(
                        PrinterBuilder()
                            .styleUnderLine(true)
                            .actionPrintText("30 days"),
                    ).actionPrintText(" with receipt\n")
                    .actionPrintText(
                        "And tags attached\n" +
                        "\n",
                    ).styleAlignment(com.starmicronics.stario10.starxpandcommand.printer.Alignment.Center)
                    .actionPrintBarcode(
                        BarcodeParameter("0123456", BarcodeSymbology.Jan8)
                            .setBarDots(3)
                            .setHeight(5.0)
                            .setPrintHri(true),
                    ).actionFeedLine(1)
                    .actionPrintQRCode(
                        QRCodeParameter("Hello, World\n")
                            .setLevel(QRCodeLevel.L)
                            .setCellSize(8),
                    ).actionCut(CutType.Partial),
        ),
    )
    return builder.getCommands()
}

各APIのStarPRNT SDKとStarXpand SDKへの対応状況は、対応API一覧をご確認ください。