Printing with P-touch Template
Overview
This feature enables replacing the texts and printing by transferring a predefined template via the following steps.
- Create a template with P-touch Editor (*.pd3, *.pdz, *.blf) (*1)
- Transfer the template to a printer
- Print the template you specified. (*2)
(*1) Brother Print SDK doesn't support.For instructions on creating a P-touch Template, see Creating a File That Can be Transferred to Your Printer.
(*2) You can replace some texts in the template before printing.
Sample Codes
Transfer and print template APIs used in the Sample Codes on this page.
iOS | Android |
---|---|
BRLMChannel | Channel |
BRLMPrinterDriverGenerator | PrinterDriverGenerator |
BRLMPrinterDriver | PrinterDriver |
Transfer Template
The following are the transfer template APIs used in the sample code.
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()
}
Print Template
The sample code shows how to print a template replacing a specified text object with a new text. Objects can be replaced using TemplateObjectReplacer.
The following are the print template APIs used in the sample code.
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()
}