In a former life I tackled the same task you describe using a Zebra printer. Our technique was similar to what ToddN described but we only used one very generic print file with a single 80 character record instead of separate print files for each form type.
As I recall, we sent printer control codes and data in a string which did not exceed 80 characters. Sometimes many strings are required to load all the code and data. There was one final code that signaled the printer that the label was ready to print. The data can be laid down in any sequence you prefer - it does not have to be laid down logically. The printer just builds the label as the data arrives using X and Y coordinates but prints nothing until you send the end-of-data code.
The printer was configured as the most generic IBM character printer - probably a 3812.
I agree with the recommendation of T.L. Ashford. Their package will save a lot of time and frustration. Plus, it comes with their support.
The first label is by far the hardest. It gets a whole lot easier after that.