Skip to main content

Printing Innopac Labels with AnzioWin


The Innopac library automation system, available from Innovative Interfaces, Inc. (III), can print spine labels or spine/pocket label pairs.  However, this printing support is fairly basic.  AnzioWin, a telnet/SSH client from Rasmussen Software, Inc., has a built-in Print Wizard (PW) feature that can enhance and adapt the output from Innopac on its way to the printer.

While the Print Wizard engine in AnzioWin is a general purpose printing tool, there are a sufficient number of Innopac users who use (or are trying to use) it that we have prepared this document to attempt to make implementation of AnzioWin easier for the Innopac user.

Anzio Lite is a limited-function version of AnzioWin.  It does not have the Print Wizard engine. Techniques described in this document do not work with Anzio Lite.

We also have other products that employ the Print Wizard engine, that are used for other printing scenarios.  They are not covered in this document.


Before we discuss the “how to”, we will explain some concepts that form the foundation of printing with Innopac and AnzioWin.

  1. The character-based protocol

    You can access the “character-based” Innopac through a terminal emulation client, a.k.a. a telnet or SSH program. This provides the user interface. There is also a “Millennium Client”, a Java-based graphical client provided by III. That is outside the scope of this document. AnzioWin is such a telnet/SSH program.

  2. The "Attached print" protocol

    Innopac supports printing to an “attached printer”. This means print jobs flow from the server, through the terminal client, and out to a printer that is attached to, or at least accessible to, the PC on which the client runs. This is a fairly simple protocol. It is also know as “passthrough print”, “slave print”, or “local print”.Innopac also supports printing to printers via other communication methods, including system printers and Workstation JetDirect printers, but that is outside the scope of this document.

  3. Printer definitions in Innopac

    At the administrative level in Innopac (accessible through the character interface), each printer must be defined. Each printer definition has a name. Besides a name, a printer definition carries a few parameters describing the printer. Some key parameters are:

    • Diac Map

      The term “diac” is short for “diacritics”. This setting references one of many available “diac map files” provided by III. It tells Innopac how to translate non-ASCII characters, including diacritics and international characters such as Chinese, Japanese, Korean, Russian, etc. In some cases these will include escape sequences that control certain types of printer. For use with AnzioWin, we recommend you select one of the available “UTF-8” entries (we don’t know how they differ).

    • Printer Type

      This should be “generic”.

    • Device

      The “Device” for a “Local” printer is normally “/dev/tty”.

  4. Printer Access in Innopac

    Once various printers are “defined” in Innopac (as above), a username (login) must be given permission to use them. Put another way, each Innopac login is given access to a list of defined printers.

  5. Label data layout in Innopac

    The content of the data to be printed on the labels is configured in Innopac, through the character interface. This consists of fields and layout information.

    • Fields

      This concerns which fields of information, such as author, title, bib number, etc., are to be printed on the spine and optionally the pocket label.

    • Layout

      Layout concerns the physical dimensions of the label. Horizontal dimensions are in “columns”, which are usually assumed to be 1/10 inch each. Vertical dimensions are in “lines”, which are usually 1/6 inch each. There are measurements for the printable space, such as “Height of label, in lines”, and unprintable space, such as “Vertical space between labels on printout, in lines”.

      Innopac's full-sheet support

      Innopac has some support for printing full-sheet labels (more than one column of spine or spine/pocket labels). However, as of this writing, it supports only one layout. AnzioWin is not typically involved in this way.

      Innopac's continuous-label support

      More typically, Innopac will specify the layout of single-column labels (where a “column” is spine only or spine plus pocket). These labels are in a continuous feed stock, and are usually printed on a dot matrix printer such as an Okidata 320. AnzioWin is able to take as input this continuous-feed data, and convert it to full-sheet output. All the dimensions and control of this conversion are managed by AnzioWin; Innopac still thinks it is printing continuously. Note, however, that there are uses for AnzioWin even when you are still printing on continuous-feed stock.

      The critical items that must be configured properly in Innopac in order for AnzioWin to work correctly are as follows:

      • Vertical dimension

        The important item here is the TOTAL number of lines issued per label, that is the sum of “Height of label, in lines” and “Vertical space between labels on printout, in lines”. This total will correspond to the “lines per label” discussed below.

      • Horizontal dimension

        Here again, the total is important. In this case, it’s the sum of “Width of spine, in columns”, “Width of label, in columns”, and “Width of gap, in columns”. This total is the width in characters of one “column” of labels (sorry about the dual use of “column”).

  6. Character sets

    It's important that both the client, AnzioWin, and the host communication are speaking the same “language”; that is, using the same character set. Because of its universality, we recommend using UTF-8, which is a form of Unicode. As described above, you can configure Innopac’s printer definition for a particular “diac map”. Choose one of the “UTF-8” options.In AnzioWin, the character set of the incoming print data must be known and properly configured. That is, it must match what Innopac is sending out. We’ll deal with that below.

  7. Configuration of AnzioWin

    All elements if AnzioWin’s configuration are set through various menu items and dialog boxes within AnzioWin itself. These entries are saved in a “settings file”, typically named “anziowin.def”, and typically located in the same directory as the AnzioWin program.

  8. Init files in Print Wizard

    Besides configuration settings, the other way you can alter AnzioWin’s printing behavior is with a “printer initialization file” or simply, an “init file”. An init file is a text file that can be edited in Notepad (or similar). Do not use Word or Wordpad, unless you explicitly save data as plain text.

    Caution: when you save from Notepad, it may want to force a “.TXT” file extensions on you, even if you specify an extension. For instance, if you enter “mytest.init” as the file to save to, Notepad will actually create “mytest.init.txt”. Furthermore, if your Windows is set to “hide extensions of known file types”, this file will show as “mytest.init”, which can be VERY confusing. To avoid this behavior, put double-quotes around your filename in Notepad, or go ahead and use a “.txt” extension.

    The content of an init file is usually Print Wizard Markup Language (PWML), which looks a lot like HTML. It specifies certain parameters by which a job should be printed, such as what the margins should be. AnzioWin internally inserts the init file onto the beginning of the print data coming from Innopac, and processes the combination as one stream of text.

    Sample init files that correspond to commonly used Gaylord label stocks are provided in the AnzioWin installation, in the “Printwiz-Samples” subdirectory under the main Anzio directory.

    These are a good way to get started. Find one, copy it to a new file name, and play with it.PWML is a very powerful language. All its features are explained in the Print Wizard manual (which is also included with AnzioWin). Following are some key items for this application:

    • PAGESIZE tag

      This tag tells PW some things about the overall layout of each page.

      1. x

        This sets the horizontal dimension of the paper, usually "x=8.5in" (where "in" means "inches")

      2. y

        This sets the vertical dimension of the paper; such as “y=11in”. If you are printing to continuous-feed output, set this to the height of one label, as measured from top-of-label to top-of-label (pretend there is no gap between labels).

      3. linespacing

        This sets the vertical increment from one line of type to the next. Standard spacing is 6 lines to the inch, so each increment is 1/6 inch, thus: “linespacing=.1667in”.

      4. length

        This indicates how many lines should fit in one column. No units are given: “length=68”. If “length” is specified but “linespacing” is not, PW will calculate linespacing using length, topmargin, and bottommargin.

    • FONT tag

      This optional tag allows you to tell PW to use a different font or size. Note that size changes can affect layout. Note also that font changes affect the entire document. There is not a way to specify different fonts for different parts of a print job or different parts of a label.

      1. face

        This specifies which named font PW will print with. The default is “Courier New”. You can choose a printer-resident font for speed, but this will generally give you less flexibility in sizing.

      2. size

        This sets the height of the characters, usually in inches (“size=.1667in”) or points (“size=12pt”), where there are 72 point to the inch. If you set size it will reset linespacing (to the same value), unless you reset linespacing.

      3. pitch

        This sets the width of characters, usually in inches (“pitch=0.1in”). If you are printing both spine and pocket labels, this will change the horizontal position of the pocket label data.You can also set pitch to zero for variable-spaced fonts. However, if you are printing spine and pocket labels, this will mess up the horizontal placement of your pocket labels.

      4. linespacing

        As above, this sets the vertical increment between lines. Set it if you want the linespacing to be different from the font size.

    • B tag is for bold

      If you want bold text, include “”.

    • BODY tag

      The BODY tag includes parameters that specify payout within the page. Dimensions are usually in inches.

      1. topmargin

        Specifies the distance from the top edge of the paper to the top of the first line of text.

      2. bottommargin

        Specifies the distance from the top of the paper to the bottom of the last line of text or spacing.

      3. leftmargin

        Specifies the distance from the left edge of the paper to the left edge of the first column of text.

      4. rightmargin

        Specifies the distance from the left edge of the paper to the rightmost edge of printing or spacing.

      5. columnoffset

        Specifies the horizontal distance from one column of labels to the next column of labels, ignoring any gaps.

      6. columngutter

        Optional, specifies the unprintable gap between the right edge of one label and the left edge of the next.

    • LEGACY tag

      This indicates the end of initial tags and the beginning of data to be printed. It is usually the last line in the init file.

  9. Printer drivers in Windows

    In order for PW to talk properly to a printer, and control it precisely, it must use a proper printer driver for that printer. Do not use “Generic”. If you experience problems with a printer’s behavior that you can’t otherwise explain, please check the manufacturer’s web site for a newer driver. Even if you just purchased a printer, do not assume that the latest printer driver is on the CD that came with the printer. Very often manufacturers discover and fix problems with new printers after the boxes have been sealed and shipped.

Step by step into Print Wizard Labels

With all that as background, following are the steps to follow to make your labels print with AnzioWin.

  1. Define a printer

    In Innopac’s character-based administrative area, make sure a printer is defined that has a “type” of “Local”. Usually this is already defined, in a printer named “Attached printer”. If no such definition exists, create one (or have this done by someone with appropriate permissions).

    Make sure the printer definition’s “diac map” is one of the “UTF-8” options (not critical if you’re doing only Roman characters).

  2. Make the printer available

    Make sure the printer name that is defined above is accessible to your particular login (username). This is an administrator function.

  3. Grab a ruler

    I know it sounds silly, but this all works only if you can take precise measurements of your label stock. Remember that horizontal measurements are often in tenths of an inch, and vertical measurements are often in 6ths.

  4. Configure Innopac's label layout

    As described above, make note of, and adjust if necessary, the “Label specifications” in Innopac. The total horizontal number of characters, divided by 10 (characters per inch), gives the column width in inches. This should not exceed the horizontal distance from the left edge of one label to the left edge of the next column of labels. The total vertical number of lines, divided by 6 (lines per inch), should not exceed the vertical distance from top of label to top of label. These are good rules to start with, but they can be adjusted later.

  5. Log in to your AnzioWin

    Start up AnzioWin. For best results, after making changes above, log out and back in.

  6. Printer Setup

    In AnzioWin’s File menu, select Printer Setup. Set the following items:

    • Primary printer

      Make sure this indicates the printer you intend to use. It should NOT be “Generic”.

    • Print Wizard

      Make sure it’s checked.

    • Destination

      Select “Printer”.

    • Preview

      Checkmark it.

    • Alternate fonts

      Here you can enter a sequence of font names, separated by commas, for PW to try and use to print characters that are not in the “Primary font”. End the sequence with “auto”. For starters. just use “auto”.

    • Primary font

      This should indicate the main font that PW will use. It is normally a fixed-space font, such as “Courier New”.

    • Debug printing

      Checkmark this item, at least until you get things working.

    • Print initialization file

      Enter, or browse to, the path name of the print init file you want to use. Print Wizard includes many sample files for common Gaylord label stock, as “Gaylord-*.init”, in the “Printwiz-Samples” directory underneath the directory containing AnzioWin. Look at what’s available. Try to find the one that’s closest to your stock layout. Copy this file to one named “mytest.init”.

  7. Flush Timer

    In the File menu, select “Flush Timer”. You can set this to “1”, meaning AnzioWin will wait one second for more data to come in before deciding that a print job is finished. Do not set it to zero.

  8. Character Set

    In the Communicate menu, “Character Set”, “Character set for passthrough print”, “8-bit”, select “UTF8”. This tells AnzioWin that passthrough print data coming from the host is in Unicode UTF-8 format.

  9. Print a test label

    Now print just ONE label from Innopac. AnzioWin should open a “Debug printing” window and a “Print Preview” window. While the Print Preview window is open, switch over to the window showing the debug information. You should find a line that says “Data contains no pagefeeds; processed x lines”. Note what ‘x’ is. This should match your vertical total as described above. Likewise the line “Longest line is x columns” should match your horizontal total above. If either of these is not what is expected, then go back and make it right before proceeding.Now hit “Cancel” in Preview.

  10. Print a test batch

    In Innopac, generate and print a larger batch of labels, at least enough to stretch into the second column, and maybe further. The more the better, up to a whole page’s worth. The data should show up in your Print Preview. Don’t click “Print” yet.

  11. Use Print Preview

    First, if you are on a recent version of AnzioWin, you can zoom the Preview window, to make it easier to see. Do so. Examine the data layout. If everything is perfect, skip ahead in these instructions. If there are problems, you can test making adjustments to your parameters (which came from your init file) in the Preview dialog. These adjustments will be temporary – they will be in effect only until you actually print the data. The goal is to let you experiment and determine what works. So first, see if you can get things to align correctly on the screen.

    If things are in general alignment (they look like labels), but the data in the second column is a bit higher or lower than in the first column, try adjusting the bottom margin or the “Lines per inch”. If it looks like lines have wrapped, increase the “Characters per inch”. Adjust other characteristics as necessary.

    When you have made the Preview look right, make a note of which parameters you have changed. Then hit “Print”, and check your actual printed output against your label stock.

  12. Adjust the Init file

    If you had to make adjustments in Print Preview in order for your alignment to be correct, you need to adjust the corresponding parameters in your init file. Do this by editing the file with Notepad. Save the file, and go back to “Print a test batch”. Repeat this process until you get your labels to print properly.

  13. Adjust AnzioWin's configuration

    Once you have PW’s printing working correctly, you may want to change some settings. For instance, you may want to remove the “Debug printing” checkmark. You may also want to remove the “Preview” checkmark, if you do not need to preview what is going to print.

New in Version 15.2f

Beginning in version 15.1f of AnzioWin, there are some new features that apply here:

  1. Cellheight

    Previously, all font height descriptions referred to the nominal height of the letters. But a 12-point font, for instance, takes more than 12 points (1/6 inch) to print, because of descenders, diacritics, etc. This made it hard to force text to fit within a prescribed vertical space. Now you can specify the height of fonts by the height of the total cell they will occupy, using “Cellheight”. This is especially useful for label printing, as below.

  2. Label length

    Many of the descriptions above refer to making PW convert single-column data into multi-column label stock. In 15.1f, we take this a step further. You can tell PW the vertical dimensions of your labels also, and it then deals with them as individual labels and not just columns. This is controlled by additional parameters in your init file; these parameters are also accessible in Print Preview. Parameter changes are:

    • Rowoffset

      The Rowoffset parameter (in the BODY tag) specifies the vertical dimension from the top of one label to the top of the next label. Rowoffset and Columnoffset must both be set to make PW work in “label mode”.

    • Rowgutter

      This optional entry indicates the vertical space that should not be used between the bottom of one label and the top of the next.

    • Length

      In label mode, the Length parameter can now indicate the number of lines per label, instead of per page.

    • Labelorder

      If you want to print labels in order by row, you can now include “Labelorder=row”.

  3. Reuse of partial sheets

    Finally, it is possible to tell PW to start printing at a certain label, so you can reuse partial label sheets. In the Preview window, just right-click in the correct place, and in the popup context menu select “Start printing here”. There is not an init file entry for this item, because it would change every time.

Sample init files

  1. Compatible version

    Following is a sample init file for Gaylord 9001 labels. This is compatible with versions of AnzioWin going back quite a way:

  2. For row-oriented label format

    Following is a sample init file for printing Gaylord LSL01 labels in row order. Note that some elements in this file require AnzioWin version 15.1f or later.



If you have any questions on the above information, feel free to call or email us at

Copyright © 2021 Rasmussen Software, Inc. Legal Information & Privacy Policy
Send comments and suggestions to