P-touch Template を転送・印刷する
テンプレート印刷機能は次の手順で利用できます。
- P-touch Editor で P-touch Template(*.pd3, *.pdz, *.blf) を作成する (*1)
- プリンターに P-touch Template を転送する
- テンプレートを指定し、印刷する (*2)
(*1) Brother Print SDK は対応していません。P-touch Templateの作成方法は、プリンターへ転送可能なファイルを作成するをご覧ください。
(*2) 印刷時にテンプレートに含まれるテキストを置換することが可能です。
サンプルコード
このページに掲載されているサンプルコードで用いられている、Template 転送・印刷に共通した API を以下で提供します。
iOS | Android |
---|---|
BRLMChannel | Channel |
BRLMPrinterDriverGenerator | PrinterDriverGenerator |
BRLMPrinterDriver | PrinterDriver |
Template 転送
Template 転送 API を以下で提供します。
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 - 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()
}