A few days ago I largely finished chapter 5 of my book where I explain how to print a sheet of QR stickers as well as individual serial number barcodes to roll-feed printers. The latter is a new capability of iOS 7 and extremely useful if all you want to print is a single label. This is why I picked the use case of a serial number barcode for my book. The assumption for the sample app is that you want to print a single serial number as Code 93 which you would stick to the back of some corporate IT hardware item.
The iOS Printer Simulator is a nifty addition to Xcode which simulates several kinds of printers so that you don’t have to waste tons of printing material while developing your app’s printing functionality. This is how largely went about putting together the two sample apps for my barcode generation chapter. But while being awesome for general developing there are some thermo-specific quirks which it cannot simulate.
The rule that you should test on physical hardware does not only apply to iPhones, but I found it also to be applicable for creating a label printing solution. So I looked around at label printers which would work with AirPrint. Brother is offering the QL-710W and the QL-720NW. The only difference between them seems to be that the 720 model has a built-in ethernet port. I opted for the 710 model since I am content with having it part of my WiFi network.
The firmware version which my QL-710W came with did not yet support AirPrint. You need version 1.28 or higher for this. To get it into your WiFi network you need to connect the printer to your Mac via USB cable and then run the Wireless Device Setup Wizard app from the CD. Fortunately I still have a CD slot on my iMac…
If you want to get a nice P-Touch Editor app installed then run the Start Here OSX app, also from the CD. This detects the current label type you installed a roll for in the printer and lets you design the label contents.
The printer firmware can either be updated with the P-Touch Update Software app which gets installed together with the editor. Or you can get the Brother Label Firmware Update iOS app from the app store. Either will let you update the firmware, your choice.
I am not exactly certain at which time AirPrint started working. Immediately update the firmware transfer it did not work, then I had to shut everything off because of the weekend. When I returned to the office the following week, AirPrint worked. I could see the printer appear in the iOS printer selection dialog. Hands off, nobody touches anything!
Picking the Right Labels
There are two kinds of labels from Brother, die cut and “endless”. The latter are called DK TAPE (yellow), the former are called DK LABEL (red). The pre-cut labels come with a fixed size and usually round corners. The tape variant can be cut at any length as needed by your use case, note that the longer dimension is measured in meters here as opposed to millimeters everywhere else. For example (see picture) the DK-22205 is 62 mm wide and 30.48 meters long.
Of course this would be too easy if the USA would be using the metric system little other reasonable countries do. Therefore there are variants of all Brother label rolls that are specified in imperial units. But we won’t mess with these, otherwise we might risk crashing a mars lander…
The printer comes with two sample rolls, one TAPE and one one LABEL roll. Installing rolls is a two step process. First you align the right side – looking into the printer – and drop the roll into the guiding part. Then you thread the tape through the slot at the front. It is recommended that you turn off the printer for this.
After closing the door and turning on the printer you have to be patient for a few seconds to reconnect to your WiFi network. Don’t worry if you don’t see the printer appear on the iOS printer selection right away.
Wasting Stickers so You Won’t Have To
When printing the first few physical stickers I found that they would not scan so well. The reason being that a line of 1 point width would come out slightly thicker than a space of 1 point width. I believe this effect to be a result of thermo printing. A laser beam is used to head individual dots on paper which turns black where heated. Since you cannot make this beam infinitely thin you will always have some bleeding making any areas (like lines or rectangles) appear slightly larger than specified during drawing.
I wasted a ton of labels to find out the reason for this….
The following image shows the original exact drawing at the top. The middle barcode has the bars reduced by 0.14 points. The bottom barcode has the bars thinned by 0.26 points each. Direct your attention to the leftmost 2 bars and spaces. They should all have equal widths, 1 point. Due to the heat bleeding from the larger black block following the left marker you can see that the space is squeezed quite a bit.
The bottom thinning value results in the best output. Look at the image in full resolution to see for yourself.
All those stickers use Code 93 which has a certain degree of tolerance for such bleeding effects. Because of this even the original output – without thinning factor – can be scanned. But you have to agree that the bottommost sticker is visually much crisper than the others. Thus is can also be scanned successfully from slightly further away.
Printing individual stickers with the Brother label printers is fun! Never again do I have to waste an entire A4 sheet of stickers just to get a single one. Installation was a bit counter-intuitive – especially the part requiring a CD drive – but I managed to get it set up and AirPrint-capable in the end.
Most use cases probably have no issues with slightly thicker lines than you draw them at. But for barcodes – where the ratio of black bars to space is key – you have to account for thermal bleeding to get crisp output.
My book teaches you how to produce the above Code 93 (and many other) barcodes with BarCodeKit. If you buy the book you also get a free license to BarCodeKit (value €150). Until March 18th you even get 50% discount with promo code “bwiaunch50″! So what are you waiting for?