Skip to content

P-touch Template を転送・印刷する

テンプレート印刷機能は次の手順で利用できます。

  1. P-touch Editor で P-touch Template(*.pd3, *.pdz, *.blf) を作成する (*1)
  2. プリンターに P-touch Template を転送する
  3. テンプレートを指定し、印刷する (*2)

(*1) Brother Print SDK は対応していません。P-touch Templateの作成方法は、プリンターへ転送可能なファイルを作成するをご覧ください。
(*2) 印刷時にテンプレートに含まれるテキストを置換することが可能です。

サンプルコード

このページに掲載されているサンプルコードで用いられている、Template 転送・印刷に共通した API を以下で提供します。

iOS Android
BRLMChannel Channel
BRLMPrinterDriverGenerator PrinterDriverGenerator
BRLMPrinterDriver PrinterDriver

Template 転送

Template 転送 API を以下で提供します。

iOS Android
transferTemplateFiles:(NSArray )urls progress:(void (^)(NSURL current, int progress))progress; transferTemplateFiles(final List paths, [TransferProgressCallback](#transferprogresscallback) progress);

iOS - Objective-C:

- (void)transfer {
    BRLMChannel *channel = [[BRLMChannel alloc] initWithWifiIPAddress:@"IPAddress.of.your.printer"];
    BRLMPrinterDriverGenerateResult *driverGenerateResult = [BRLMPrinterDriverGenerator openChannel:channel];
    if (driverGenerateResult.error.code != BRLMOpenChannelErrorCodeNoError ||
        driverGenerateResult.driver == nil) {
        NSLog(@"%@", @(driverGenerateResult.error.code));
        return;
    }

    BRLMPrinterDriver *printerDriver = driverGenerateResult.driver;
    NSURL *url = [[NSBundle mainBundle] URLForResource:@"YourFilename" withExtension:@"Extension"];
    NSArray<NSURL *> *urls = [NSArray<NSURL *> arrayWithContentsOfURL:url];
    BRLMTransferResult<NSURL*> *trasnferResult = [printerDriver transferTemplateFiles:urls progress:^(NSURL* current, int progress) {
        //Write your action
    }];
    if (trasnferResult.code != BRLMTransferSummaryErrorAllSuccess) {
        NSLog(@"Error - Transfer Templates: %@", @(trasnferResult.code));
    }
    else {
        NSLog(@"Success - Transfer Templates");
    }
    [printerDriver closeChannel];
}

iOS - Swift:

    func transfer() {
        let channel = BRLMChannel(wifiIPAddress: "IPAddress.of.your.printer")
        let generateResult = BRLMPrinterDriverGenerator.open(channel)
        guard generateResult.error.code == BRLMOpenChannelErrorCode.noError,
              let printerDriver = generateResult.driver else {
            print("Error - Open Channel: \(generateResult.error.code)")
            return
        }
        defer {
            printerDriver.closeChannel()
        }
        guard
            let url = Bundle.main.url(forResource: "YourFilename", withExtension: "Extension")
        else {
            print("Error - fail to load your file.")
            return
        }
        let urls = [url]
        let convertedCallback: ((URL, Int32) -> Void)? = { (url, progress) in
            //Write your action
        }
        let trasnferResult = printerDriver.transferTemplateFiles(urls, progress: convertedCallback)
        if trasnferResult.code != .allSuccess {
            print("Error - Transfer Templates: \(trasnferResult.code)")
        }
        else {
            print("Success - Transfer Templates")
        }
    }

Android:

public Transfer.Result<String> transfer() {
    Channel channel = Channel.newWifiChannel("IPAddress.of.your.printer");
    PrinterDriverGenerateResult generateResult = PrinterDriverGenerator.openChannel(channel);
    if (generateResult.getError().getCode() != OpenChannelError.ErrorCode.NoError) {
        Log.e("", "Error - Open Channel: " + generateResult.getError().getCode());
        return;
    }

    PrinterDriver printerDriver = generateResult.getDriver();

    List<String> files = new ArrayList<String>(){};
    files.add("Your file");
    Transfer.Result<String> transferResult = printerDriver.transferTemplateFiles(files, (sent, progressPercentage) -> {
        //Write your action
    });
    if(transferResult.getErrorCode() != Transfer.SummaryErrorCode.AllSuccess) {
        Log.d("", "Error - Transfer Template: " + transferResult.getErrorCode());
    }
    else {
        Log.d("", "Success - Transfer Template");
    }
    printerDriver.closeChannel();
}

Android - kotlin:

fun transfer() {
    val channel = Channel.newWifiChannel("IPAddress.of.your.printer")
    val generateResult = PrinterDriverGenerator.openChannel(channel)
    if (generateResult.error.code != OpenChannelError.ErrorCode.NoError) {
        Log.e("", "Error - Open Channel: " + generateResult.error.code);
        return
    }

    val printerDriver = generateResult.driver
    val files: List<String> = listOf("your file path")
    val transferResult = printerDriver.transferTemplateFiles(files) { name, progressPercentage ->
        //Write your action
    }
    if(transferResult.errorCode != SummaryErrorCode.AllSuccess) {
        Log.d("", "Error - Transfer Template: " + transferResult.errorCode);
    }
    else {
        Log.d("", "Success - Transfer Template");
    }
    printerDriver.closeChannel()
}

テンプレート印刷

以下のサンプルコードでは、指定したオブジェクトを新しいテキストに置き換えてテンプレートを印刷する方法を示します。
TemplateObjectReplacer を利用することでオブジェクトを置き換ることができます。

テンプレート印刷 API を以下で提供します。

iOS Android
BRLMTemplateObjectReplacer TemplateObjectReplacer
printTemplateWithKey:(NSUInteger)key settings:(id)settings replacers:(NSArray*)replacers printTemplate(final Integer key, final ITemplatePrintSettings printSettings, final ArrayList replacers)

iOS - Objective-C:

- (void)printTemplate:(int)templateKey index:(NSUInteger)index text:(NSString *)newText encode:(BRLMTemplateObjectEncode)encode{
    BRLMChannel *channel = [[BRLMChannel alloc] initWithWifiIPAddress:@"IPAddress.of.your.printer"];

    BRLMPrinterDriverGenerateResult *driverGenerateResult = [BRLMPrinterDriverGenerator openChannel:channel];
    if (driverGenerateResult.error.code != BRLMOpenChannelErrorCodeNoError ||
        driverGenerateResult.driver == nil) {
        NSLog(@"%@", @(driverGenerateResult.error.code));
        return;
    }

    BRLMPrinterDriver *printerDriver = driverGenerateResult.driver;
    BRLMPTTemplatePrintSettings *ptSettings = [[BRLMPTTemplatePrintSettings alloc] initDefaultPrintSettingsWithPrinterModel:BRLMPrinterModelPT_YOURS];
    ptSettings.numCopies = 1;

    //Create replacer if you want change objects
    BRLMTemplateObjectReplacer *replacer = [[BRLMTemplateObjectReplacer alloc] initWithObjectIndex:index value:newText encode:encode];
    NSArray<BRLMTemplateObjectReplacer *> *replacers = [NSArray arrayWithObject:replacer];

    BRLMPrintError *printError = [printerDriver printTemplateWithKey:templateKey settings:ptSettings replacers:replacers];
    if (printError.code != BRLMPrintErrorCodeNoError) {
        NSLog(@"Error - Print Template: %@", @(printError.code));
    }
    else {
        NSLog(@"Success - Print Template");
    }

    [printerDriver closeChannel];
}

iOS - Swift:

    func printTemplate(templateKey: UInt, index:UInt, newText: String, eoncode:BRLMTemplateObjectEncode) {
        let channel = BRLMChannel(wifiIPAddress: "IPAddress.of.your.printer")

        let generateResult = BRLMPrinterDriverGenerator.open(channel)
        guard generateResult.error.code == BRLMOpenChannelErrorCode.noError,
        let printerDriver = generateResult.driver else {
            print("Error - Open Channel: \(generateResult.error.code)")
            return
        }
        defer {
            printerDriver.closeChannel()
        }
        guard
            let ptSettings = BRLMPTTemplatePrintSettings(defaultPrintSettingsWith: .YourPTModel)
            else {
                print("Error - fail to create ptSettings.")
                return
        }
        ptSettings.numCopies = 1;

        //Create replacer if you want change objects
        let replacers = [BRLMTemplateObjectReplacer(objectIndex: index, value: newText, encode: eoncode)]

        let printError = printerDriver.printTemplate(withKey: templateKey, settings: ptSettings, replacers: replacers)
        if printError.code != .noError {
            print("Error - Print Template: \(printError.code)")
        }
        else {
            print("Success - Print Template")
        }
    }

Android - java:

void printTemplate(int templateKey, int index, String newText, TemplateObjectReplacer.Encode encode) {
    Channel channel = Channel.newWifiChannel("IPAddress.of.your.printer");
    PrinterDriverGenerateResult generateResult = PrinterDriverGenerator.openChannel(channel);
    if (generateResult.getError().getCode() != OpenChannelError.ErrorCode.NoError) {
        Log.e("", "Error - Open Channel: " + generateResult.getError().getCode());
        return;
    }

    PrinterDriver printerDriver = generateResult.getDriver();
    PTTemplatePrintSettings ptSettings = new PTTemplatePrintSettings(PrinterModel.YourPTModel);
    ptSettings.setNumCopies(1);

    //Create replacer if you want change objects
    TemplateObjectReplacer replacer = new TemplateObjectReplacer(index, newText, encode);
    ArrayList<TemplateObjectReplacer> replacers = new ArrayList<>();
    replacers.add(replacer);

    PrintError printError = printerDriver.printTemplate(templateKey, ptSettings, replacers);
    if (printError.getCode() != PrintError.ErrorCode.NoError) {
        Log.d("", "Error - Print Template: " + printError.getCode());
    }
    else {
        Log.d("", "Success - Print Template");
    }
    printerDriver.closeChannel();
}

Android - kotlin:

fun printTemplate(templateKey: Int, index: Int, newText: String, encode: TemplateObjectReplacer.Encode) {
    val channel = Channel.newWifiChannel("IPAddress.of.your.printer")
    val generateResult = PrinterDriverGenerator.openChannel(channel)
    if (generateResult.error.code != OpenChannelError.ErrorCode.NoError) {
        Log.e("", "Error - Open Channel: " + result.getError().getCode());
        return
    }

    val printerDriver = generateResult.driver
    val ptSettings = PTTemplatePrintSettings(PrinterModel.YourPTModel)
    ptSettings.numCopies = 1

    //Create replacer if you want change objects
    var replacer = ArrayList<TemplateObjectReplacer>()
    replacer.add(TemplateObjectReplacer(index, newText, encode))

    val printError = printerDriver.printTemplate(templateKey, ptSettings, replacer)
    if(printError.code != PrintError.ErrorCode.NoError) {
        Log.d("", "Error - Print Template: " + printError.getCode());
    }
    else {
        Log.d("", "Success - Print Template");
    }
    driver.closeChannel()
}