Printing Hipster PDA templates onto index cards with Linux & CUPS

As I mentioned yesterday, I went through some hair-pulling (and 30 or 40 wasted cards) trying to get the DIY planner templates to print out correctly onto index cards. For the LazyWeb giveback karma, here’s what I had to do to get it working.

First off, materials: I’m using a Linux system running CUPS v1.2.4 printing to a Brother HL-5170DN, using the manual feed tray to print onto “normal” index cards (i.e., light cardstock – heavier than paper but not super heavyweight stuff). There’s no problem getting the cards through the printer, but (a) I wasn’t able to get the printer to duplex them (although I didn’t try terribly hard) and (b) the cards do get a pretty decent curve put into them when passing through the printer – nothing that can’t be straightened out, but a little disconcerting during the first few print runs.

Second, CUPS configuration: I’m using a PPD file from this Brother printer support site, because the ones that ship with CUPS don’t seem to support custom paper sizes. Go to that page, scroll down to the “Creating Postscript printer drivers (for CUPS)” section, hit the HL-5170DN link, click through the license agreement, then download the PPD file. Place it in an appropriate location on your system (for me that was /usr/share/ppd/) and reconfigure your CUPS printer set up to use that PPD instead of the usual one.

At this point, your printer should be ready, so the next step is to download the hPDA templates from the DIY planner site. Inside the zipfile that you download, you should find a PDF called diyp3h_core_1up.pdf. Open that up with Acrobat Reader (version 7.0.8 here) and find a particular card that you want to print – page 4 is a good one to start with, because it covers pretty much a whole index card, meaning that it will be easy to spot if you’re getting clipping on the edges.

Pull up the card you want to print in Acrobat Reader; the following instructions assume that you’re looking at the card you want to print. Next, open up the ‘Print’ dialog (Control-P or File >> Print from the menu bar). Under ‘Print Range’, select ‘Current page’. Leave ‘Copies’ set at 1. Set ‘Scale’ to 97%. (If you’re not using the same printer model as I am, you may need to experiment with the scaling to find the proper factor. For me, 97% was the point where I no longer got clipping on the sides of the template.) Click the ‘Print to file’ checkbox, and put in a descriptive name, like ‘’. The file extension isn’t important for Linux, but you will be generating a PostScript file, which usually has a ‘.ps’ extension. And now that you’ve done all that, click ‘OK’.

There will now be a file, in your home directory, called whatever name you gave to Acrobat Reader (so, in our example, ‘~/’). Prepare your printer by opening up the manual feed tray and loading up a stack of index cards (for the HL-5170DN, the print will appear on the upper face of the cards as they are loaded in the manual feed tray), then fire off this command from a shell: lp -o PageSize=Custom.3x5in ~/ Of course, if you called the file something different, use that file name instead.

Once you’re sure that everything is working properly, you can print off multiple copies of a particular file using the ‘-n’ argument, like so: lp -o PageSize=Custom.3x5in -n 5 ~/ (which would print off five copies of that particular card).

The final step is to review all the templates in the PDF that you downloaded, deciding which ones you’re going to want to use. For each one that you want to be able to print out, you’ll need to repeat the whole process of printing out to a file. Give each file an easy to remember name, and save them somewhere under your home directory. That way, you’ll be able to print out new cards as you need them using the ‘lp’ command, without having to jump through the Acrobat Reader “print to file” hoop every time.

It’s also possible to whip up a simple script that wraps up the ‘lp’ command options behind an easier-to-use facade, but I think we’ll leave that as an exercise for the reader…