]> git.sur5r.net Git - glabels/blobdiff - barcode-0.98/doc/barcodedoc.txt
Organized master branch to be top-level directory for glabels, instead of
[glabels] / barcode-0.98 / doc / barcodedoc.txt
diff --git a/barcode-0.98/doc/barcodedoc.txt b/barcode-0.98/doc/barcodedoc.txt
new file mode 100644 (file)
index 0000000..2d242f9
--- /dev/null
@@ -0,0 +1,734 @@
+
+
+This is barcode.info, produced by makeinfo version 4.0b from
+barcode.texinfo.
+
+   This file is the User's Manual for the barcode library (version
+0.98).
+
+
+
+
+*Node: Overview
+                               Overview
+                               ********
+
+   The "barcode" package is mainly a C library for creating bar-code
+output files. It also includes a command line front-end and (in a
+foreseeable future) a graphic frontend.
+
+   The package is designed as a library because we think the main use
+for barcode-generation tools is inside more featured applications. The
+library addresses bar code printing as two distinct problems: creation
+of bar information and actual conversion to an output format. To this
+aim we use an intermediate representation for bar codes, which is
+currently documented in the `ps.c' source file (not in this document).
+
+   Note that the library and the accompanying material is released
+according to the GPL license, not the LGPL one. A copy of the GPL is
+included in the distribution tarball.
+
+
+
+
+*Node: The Barcode Object
+                               The Underlying Data Structure
+                               *****************************
+
+   Every barcode-related function acts on a data structure defined in
+the `barcode.h' header, which must be included by any C source file
+that uses the library. The header is installed by make install.
+
+   The definition of the data structure is included here for reference:
+
+     struct Barcode_Item {
+         int flags;         /* type of encoding and other flags */
+         char *ascii;       /* malloced */
+         char *partial;     /* malloced too */
+         char *textinfo;    /* information about text placement */
+         char *encoding;    /* code name, filled by encoding engine */
+         int width, height; /* output units */
+         int xoff, yoff;    /* output units */
+         int margin;        /* output units */
+         double scalef;     /* requested scaling for barcode */
+         int error;         /* an errno-like value, in case of failure */
+     };
+
+   The exact meaning of each field and the various flags implemented are
+described in the following sections.
+
+   Even though you won't usually need to act on the contents of this
+structure, some of the functions in the library receive arguments that
+are directly related to one or more of these fields.
+
+
+
+
+*Node: The Field List
+                               The Fields
+                               ==========
+
+`int flags;'
+     The flags are, as you may suspect, meant to specify the exact
+     behaviour of the library. They are often passed as an argument to
+     barcode functions and are discussed in the next section.
+
+`char *ascii;'
+`char *partial;'
+`char *textinfo;'
+`char *encoding;'
+     These fields are internally managed by the library, and you are
+     not expected to touch them if you use the provided API. All of
+     them are allocated with malloc.
+
+`int width;'
+`int height;'
+     They specify the width and height of the active barcode region
+     (i.e., excluding the white margin), in the units used to create
+     output data (for postscript they are points, 1/72th of an inch,
+     0.352 mm). The fields can be either assigned to in the structure
+     or via Barcode_Position(), at your choice.  If either value or
+     both are left to their default value of zero, the output engine
+     will assign default values according to the specified scaling
+     factor. If the specified width is bigger than needed (according to
+     the scaling factor), the output barcode will be centered in its
+     requested region. If either the width of the height are too small
+     for the specified scale factor, the output bar code will expand
+     symmetrically around the requested region.
+
+`int xoff;'
+`int yoff;'
+     The fields specify offset from the coordinate origin of the output
+     engine (for postscript, position 0,0 is the lower left corner of
+     the page).  The fields can be either assigned to in the structure
+     or via Barcode_Position(), at your choice.  The offset specifies
+     where the white margin begins, not where the first bar will be
+     printed. To print real ink to the specified position you should
+     set margin to 0.
+
+`int margin;'
+     The white margin that will be left around the printed area of the
+     bar code. The same margin is applied to all sides of the printed
+     area. The default value for the margin is defined in `barcode.h'
+     as BARCODE_DEFAULT_MARGIN (10).
+
+`double scalef;'
+     The enlarge or shrink value for the bar code over its default
+     dimension. The width and scalef fields interact deeply in the
+     creation of the output, and a complete description of the issues
+     appears later in this section.
+
+`int error;'
+     The field is used when a barcode function fails to host an
+     errno-like integer value.
+
+Use of the width and scalef fields.
+-----------------------------------
+
+   A width unit is the width of the thinnest bar and/or space in the
+chosen code; it defaults to 1 point if the output is postscript or
+encapsulated postscript.
+
+   Either or both the code width and the scale factor can be left
+unspecified (i.e., zero). The library deals with defaults in the
+following way:
+
+Both unspecified
+     If both the width and the scale factor are unspecified, the scale
+     factor will default to 1.0 and the width is calculated according
+     to the actual width of the bar code being printed.
+
+Width unspecified
+     If the width is not specified, it is calculated according to the
+     values of scalef.
+
+Scale factor unspecified
+     If the scale factor is not specified, it will be chosen so that
+     the generated bar code exactly fits the specified width.
+
+Both specified
+     The code will be printed inside the specified region according to
+     the specified scale factor. It will be aligned to the left.  If,
+     however, the chosen width is too small for the specific bar code
+     and scaling factor, then the code will extend symmetrically to the
+     left and to the right of the chosen region.
+
+
+
+
+*Node: The Intermediate Representation
+                               The Intermediate Representation
+                               ===============================
+
+   The encoding functions print their output into the partial and
+texinfo fields of the barcode data structure. Those fields, together
+with position information, are then used to generate actual output.
+This is an informal description of the intermediate format.
+
+   The first char in partial tells how much extra space to add to the
+left of the bars. For EAN-13, it is used to leave space to print the
+first digit, other codes may have '0' for no-extra-space-needed.
+
+   The next characters are alternating bars and spaces, as multiples of
+the base dimension which is 1 unless the code is rescaled. Rescaling is
+calculated as the ratio from the requested width and the calculated
+width.  Digits represent bar/space dimensions. Lower-case letters
+represent those bars that should extend lower than the others: 'a' is
+equivalent to '1', 'b' is '2' and so on up to 'i' which is equivalent to
+'9'. Other letters will be used for encoding-specific meanings, as soon
+as I implement them.
+
+   The textinfo string is made up of fields %lf:%lf:%c separated by
+blank space. The first integer is the x position of the character, the
+second is the font size (before rescaling) and the char item is the
+character to be printed.
+
+   Both the partial and textinfo strings may include "-" or "+" as
+special characters (in textinfo the char should be a stand-alone word).
+They state where the text should be printed: below the bars ("-",
+default) or above the bars. This is used, for example, to print the
+add-5 and add-2 codes to the right of UPC or EAN codes (the add-5
+extension is mostly used in ISBN codes).
+
+
+
+
+*Node: Supported Flags
+                               The Flags
+                               *********
+
+   The following flags are supported by version 0.98 of the library:
+
+`BARCODE_ENCODING_MASK'
+     The mask is used to extract the encoding-type identifier from the
+     flags field.
+
+`BARCODE_EAN'
+`BARCODE_UPC'
+`BARCODE_ISBN'
+`BARCODE_128B'
+`BARCODE_128C'
+`BARCODE_128'
+`BARCODE_128RAW'
+`BARCODE_39'
+`BARCODE_I25'
+`BARCODE_CBR'
+`BARCODE_MSI'
+`BARCODE_PLS'
+`BARCODE_93'
+     The currently supported encoding types: EAN (13 digits, 8 digits,
+     13 + 2 add-on and 13 + 5 add-on), UPC (UPC-A, UPC-E, UPC-A with 2
+     or 5 digit add-on), ISBN (with or without the 5-digit add-on),
+     CODE128-B (the whole set of printable ASCII characters), CODE128-C
+     (two digits encoded by each barcode symbol), CODE128 (all ASCII
+     values), a "raw-input" pseudo-code that generates CODE128 output,
+     CODE39 (alphanumeric), "interleaved 2 of 5" (numeric), Codabar
+     (numeric plus a few symbols), MSI (numeric) and Plessey (hex
+     digits).  *Note Supported Encodings::.
+
+`BARCODE_ANY'
+     This special encoding type (represented by a value of zero, so it
+     will be the default) tells the encoding procedure to look for the
+     first encoding type that can deal with a textual string.
+     Therefore, a 11-digit code will be printed as UPC (as well as
+     6-digit, 11+2 and 11+5), a 12-digit (or 7-digit, or 12+2 or 12+5)
+     as EAN13, an ISBN code (with or without hyphens, with or without
+     add-5) will be encoded in its EAN13 representation, an even number
+     of digits is encoded using CODE128C and a generic string is
+     encoded using CODE128B. Since code-39 offers a much larger
+     representation for the same text string, code128-b is preferred
+     over code39 for alphanumeric strings.
+
+`BARCODE_NO_ASCII'
+     Instructs the engine not to print the ascii string on output. By
+     default the bar code is accompanied with an ascii version of the
+     text it encodes.
+
+`BARCODE_NO_CHECKSUM'
+     Instructs the engine not to add the checksum character to the
+     output. Not all the encoding types can drop the checksum; those
+     where the checksum is mandatory (like EAN and UPC) just ignore the
+     flag.
+
+`BARCODE_OUTPUT_MASK'
+     The mask is used to extract the output-type identifier from the
+     flags field.
+
+`BARCODE_OUT_PS'
+`BARCODE_OUT_EPS'
+`BARCODE_OUT_PCL'
+`BARCODE_OUT_PCL_III'
+     The currently supported encoding types: full-page postscript and
+     encapsulated postscript; PCL (print command language, for HP
+     printers) and PCL-III (same as PCL, but uses a font not available
+     on older printers).
+
+`BARCODE_OUT_NOHEADERS'
+     The flag instructs the printing engine not to print the header and
+     footer part of the file. This makes sense for the postscript
+     engine but might not make sense for other engines; such other
+     engines will silently ignore the flag just like the PCL back-end
+     does.
+
+
+
+
+*Node: The API
+                               Functions Exported by the Library
+                               *********************************
+
+   The functions included in the barcode library are declared in the
+header file barcode.h.  They perform the following tasks:
+
+`struct Barcode_Item *Barcode_Create(char *text);'
+     The function creates a new barcode object to deal with a specified
+     text string.  It returns NULL in case of failure and a pointer to
+     a barcode data structure in case of success.
+
+`int Barcode_Delete(struct Barcode_Item *bc);'
+     Destroy a barcode object. Always returns 0 (success)
+
+`int Barcode_Encode(struct Barcode_Item *bc, int flags);'
+     Encode the text included in the bc object. Valid flags are the
+     encoding type (other flags are ignored) and BARCODE_NO_CHECKSUM
+     (other flags are silently ignored); if the flag argument is zero,
+     bc->flags will apply. The function returns 0 on success and -1 in
+     case of error. After successful termination the data structure
+     will host the description of the bar code and its textual
+     representation, after a failure the error field will include the
+     reason of the failure.
+
+`int Barcode_Print(struct Barcode_Item *bc, FILE *f, int flags);'
+     Print the bar code described by bc to the specified file.  Valid
+     flags are the output type, BARCODE_NO_ASCII and
+     BARCODE_OUT_NOHEADERS, other flags are ignored. If any of these
+     flags is zero, it will be inherited from bc->flags which therefore
+     takes precedence. The function returns 0 on success and -1 in case
+     of error (with bc->error set accordingly). In case of success, the
+     bar code is printed to the specified file, which won't be closed
+     after use.
+
+`int Barcode_Position(struct Barcode_Item *bc, int wid, int hei, int xoff, int yoff, double scalef);'
+     The function is a shortcut to assign values to the data structure.
+
+`int Barcode_Encode_and_Print(char *text, FILE *f, int wid, int hei, int xoff, int yoff, int flags);'
+     The function deals with the whole life of the barcode object by
+     calling the other functions; it uses all the specified flags.
+
+`int Barcode_Version(char *versionname);'
+     Returns the current version as an integer number of the form major
+     * 10000 + minor * 100 + release. Therefore, version 1.03.5 will be
+     returned as 10305 and version 0.53 as 5300.  If the argument is
+     non-null, it will be used to return the version number as a
+     string. Note that the same information is available from two
+     preprocessor macros: BARCODE_VERSION (the string) and
+     BARCODE_VERSION_INT (the integer number).
+
+
+
+
+*Node: The barcode Executable
+                               The barcode frontend program
+                               ****************************
+
+   The barcode program is a front-end to access some features of the
+library from the command line.  It is able to read user supplied
+strings from the command line or a data file (standard input by default)
+and encode all of them.
+
+
+
+
+*Node: The Command Line
+                               The Command Line
+                               ================
+
+   barcode accepts the following options:
+
+`--help or -h'
+     Print a usage summary and exit.
+
+`-i filename'
+     Identify a file where strings to be encoded are read from. If
+     missing (and if -b is not used) it defaults to standard input.
+     Each data line of the input file will be used to create one
+     barcode output.
+
+`-o filename'
+     Output file. It defaults to standard output.
+
+`-b string'
+     Specify a single "barcode" string to be encoded.  The option can
+     be used multiple times in order to encode multiple strings (this
+     will result in multi-page postscript output or a table of barcodes
+     if -t is specified).  The strings must match the encoding chosen;
+     if it doesn't match the program will print a warning to stderr and
+     generate "blank" output (although not zero-length).  Please note
+     that a string including spaces or other special characters must be
+     properly quoted.
+
+`-e encoding'
+     encoding is the name of the chosen encoding format being used. It
+     defaults to the value of the environment variable BARCODE_ENCODING
+     or to auto detection if the environment is also unset.
+
+`-g geometry'
+     The geometry argument is of the form "[<width> x <height>] [+
+     <xmargin> + <ymargin>]" (with no intervening spaces). Unspecified
+     margin values will result in no margin; unspecified size results
+     in default size.  The specified values represent print points by
+     default, and can be inches, millimeters or other units according
+     to the -u option or the BARCODE_UNIT environment variable.  The
+     argument is used to place the printout code on the page. Note that
+     an additional white margin of 10 points is added to the printout.
+     If the option is unspecified, BARCODE_GEOMETRY is looked up in the
+     environment, if missing a default size and no margin (but the
+     default 10 points) are used.
+
+`-t table-geometry'
+     Used to print several barcodes to a single page, this option is
+     meant to be used to print stickers. The argument is of the form
+     "<columns> x <lines> [+ <leftmargin> + <bottommargin> [-
+     <rightmargin> [- <topmargin>]]]" (with no intervening spaces); if
+     missing, the top and right margin will default to be the same as
+     the bottom and left margin. The margins are specified in print
+     points or in the chosen unit (see -u below).  If the option is not
+     specified, BARCODE_TABLE is looked up in the environment,
+     otherwise no table is printed and each barcode will get its own
+     page.  The size (but not the position) of a barcode item within a
+     table can also be selected using -g (see "geometry" above),
+     without struggling with external and internal margins.  I still
+     think management of geometries in a table is suboptimal, but I
+     can't make it better without introducing incompatibilities.
+
+`-m margin(s)'
+     Specifies an internal margin for each sticker in the table. The
+     argument is of the form "<xmargin>,<ymargin>" and the margin is
+     applied symmetrically to the sticker. If unspecified, the
+     environment variable BARCODE_MARGIN is used or a default internal
+     margin of 10 points is used.
+
+`-n'
+     "Numeric" output: don't print the ASCII form of the code, only the
+     bars.
+
+`-c'
+     No checksum character (for encodings that allow it, like code 39,
+     other codes, like UPC or EAN, ignore this option).
+
+`-E'
+     Encapsulated postscript (default is normal postscript). When the
+     output is generated as EPS only one barcode is encoded.
+
+`-P'
+     PCL output. Please note that the Y direction goes from top to
+     bottom for PCL, and the origin for an image is the top-left corner
+     instead of the bottom-left
+
+`-p pagesize'
+     Specify a non-default page size. The page size can be specified in
+     millimeters, inches or plain numbers (for example: "210x297mm",
+     "8.5x11in", "595x842"). A page specification as numbers will be
+     interpreted according to the current unit specification (see -u
+     below). If libpaper is available, you can also specify the page
+     size with its name, like "A3" or "letter" (libpaper is a standard
+     component of Debian GNU/Linux, but may be missing elsewhere). The
+     default page size is your system-wide default if libpaper is
+     there, A4 otherwise.
+
+`-u unit'
+     Choose the unit used in size specifications. Accepted values are
+     "mm", "cm", "in" and "pt". By default, the program will check
+     BARCODE_UNIT in the environment, and assume points otherwise (this
+     behaviour is compatible with 0.92 and previous versions. If -u
+     appears more than once, each instance will modified the behaviour
+     for the arguments at its right, as the command line is processes
+     left to right. The program internally works with points, and any
+     size is approximated to the nearest multiple of one point. The -u
+     option affect -g (geometry), -t (table) and -p (page size).
+
+
+
+
+*Node: Supported Encodings
+                               Supported Encodings
+                               *******************
+
+   The program encodes text strings passed either on the command line
+(with -b) or retrieved from standard input. The text representation is
+interpreted according to the following rules. When auto-detection of
+the encoding is enabled (i.e, no explicit encoding type is specified),
+the encoding types are scanned to find one that can digest the text
+string.  The following list of supported types is sorted in the same
+order the library uses when auto-detecting a suitable encoding for a
+string.
+
+EAN
+     The EAN frontend is similar to UPC; it accepts strings of digits,
+     12 or 7 characters long. Strings of 13 or 8 characters are
+     accepted if the provided checksum digit is correct.  I expect most
+     users to feed input without a checksum, though. The add-2 and
+     add-5 extension are accepted for both the EAN-13 and the EAN-8
+     encodings.  The following are example of valid input strings:
+     "123456789012" (EAN-13), "1234567890128" (EAN-13 wih checksum),
+     "1234567" (EAN-8), "12345670 12345" (EAN-8 with checksum and
+     add-5), "123456789012 12" (EAN-13 with add-2), "123456789012
+     12345" (EAN-13 with add-5).
+
+UPC
+     The UPC frontend accepts only strings made up of digits (and, if a
+     supplemental encoding is used, a blank to separate it).  It
+     accepts strings of 11 or 12 digits (UPC-A) and 6 or 7 or 8 digits
+     (UPC-E).
+
+     The 12th digit of UPC-A is the checksum and is added by the
+     library if not specified in the input; if it is specified, it must
+     be the right checksum or the code is rejected as invalid.  For
+     UPC-E, 6 digit are considered to be the middle part of the code, a
+     leading 0 is assumed and the checksum is added; 7 digits are
+     either considered the initial part (leading digit 0 or 1, checksum
+     missing) or the final part (checksum specified, leading 0
+     assumed); 8 digits are considered to be the complete code, with
+     leading 0 or 1 and checksum.  For both UPC-A and UPC-E, a trailing
+     string of 2 digits or 5 digits is accepted as well. Therefore, the
+     following are examples of valid strings that can be encoded as UPC:
+     "01234567890" (UPC-A) "012345678905" (UPC-A with checksum),
+     "012345" (UPC-E), "01234567890 12" (UPC-A, add-2) and "01234567890
+     12345" (UPC-A, add-5), "0123456 12" (UPC-E, add-2).  Please note
+     that when setting BARCODE_ANY to auto-detect the encoding to be
+     used, 12-digit strings and 7-digit strings will always be
+     identified as EAN. This because I expect most user to provide
+     input without a checksum. If you need to specify UPC-with-checksum
+     as input you must explicitly set BARCODE_UPC as a flag or use -e
+     upc on the command line.
+
+ISBN
+     ISBN numbers are encoded as EAN-13 symbols, with an optional add-5
+     trailer. The ISBN frontend of the library accepts real ISBN
+     numbers and deals with any hyphen and, if present, the ISBN
+     checksum character before encoding data. Valid representations for
+     ISBN strings are for example: "1-56592-292-1", "3-89721-122-X" and
+     "3-89721-122-X 06900".
+
+CODE 128-B
+     This encoding can represent all of the printing ASCII characters,
+     from the space (32) to DEL (127). The checksum digit is mandatory
+     in this encoding.
+
+CODE 128-C
+     The "C" variation of Code-128 uses Code-128 symbols to represent
+     two digits at a time (Code-128 is made up of 104 symbols whose
+     interpretation is controlled by the start symbol being used). Code
+     128-C is thus the most compact way to represent any even number of
+     digits. The encoder refuses to deal with an odd number of digits
+     because the caller is expected to provide proper padding to an
+     even number of digits. (Since Code-128 includes control symbols to
+     switch charset, it is theoretically possible to represent the odd
+     digit as a Code 128-A or 128-B symbol, but this tool doesn't
+     currently implement this option).
+
+CODE 128 RAW
+     Code-128 output represented symbol-by-symbol in the input string.
+     To override part of the problems outlined below in specifying
+     code128 symbols, this pseudo-encoding allows the used to specify a
+     list of code128 symbols separated by spaces. Each symbol is
+     represented by a number in the range 0-105.  The list should
+     include the leading character.The checksum and the stop character
+     are automatically added by the library. Most likely this
+     pseudo-encoding will be used with BARCODE_NO_ASCII and some
+     external program to supply the printed text.
+
+CODE 39
+     The code-39 standard can encode uppercase letters, digits, the
+     blank space, plus, minus, dot, star, dollar, slash, percent.  Any
+     string that is only composed of such characters is accepted by the
+     code-39 encoder. To avoid loosing information, the encoder refuses
+     to encode mixed-case strings (a lowercase string is nonetheless
+     accepted as a shortcut, but is encoded as uppercase).
+
+INTERLEAVED 2 OF 5
+     This encoding can only represent an even number of digits (odd
+     digits are represented by bars, and even digits by the
+     interleaving spaces). The name stresses the fact that two of the
+     five items (bars or spaces) allocated to each symbol are wide,
+     while the rest are narrow. The checksum digit is optional (can be
+     disabled via BARCODE_NO_CHECKSUM).  Since the number of digits,
+     including the checksum, must be even, a leading zero is inserted
+     in the string being encoded if needed (this is specifically stated
+     in the specs I have access to).
+
+CODE 128
+     Automatic selection between alphabet A, B and C of the Code-128
+     standard. This encoding can represent all ASCII symbols, from 0
+     (NUL) to 127 (DEL), as well as four special symbols, named F1, F2,
+     F3, F4. The set of symbols available in this encoding is not
+     easily represented as input to the barcode library, so the
+     following convention is used.  In the input string, which is a
+     C-language null-terminated string, the NUL char is represented by
+     the value 128 (0x80, 0200) and the F1-F4 characters are
+     represented by the values 193-196 (0xc1-0xc4, 0301-0304).  The
+     values have been chosen to ease their representation as escape
+     sequences.
+
+     Since the shell doesn't seem to interpret escape sequences on the
+     command line, the "-b" option cannot be easily used to designate
+     the strings to be encoded. As a workaround you can resort to the
+     command echo, either within back-ticks or used separately to
+     create a file that is then fed to the standard-input of barcode -
+     assuming your echo command processes escape sequences.  The
+     newline character is especially though to encode (but not
+     impossible unless you use a csh variant.
+
+     These problems only apply to the command-line tool; the use of
+     library functions doesn't give any problem. In needed, you can use
+     the "code 128 raw" pseudo-encoding to represent code128 symbols by
+     their numerical value. This encoding is used late in the
+     auto-selection mechanism because (almost) any input string can be
+     represented using code128.
+
+CODABAR
+     Codabar can encode the ten digits and a few special symbols
+     (minus, plus, dollar, colon, bar, dot). The characters "A", "B",
+     "C" and "D" are used to represent four different start/stop
+     characters. The input string to the barcode library can include
+     the start and stop characters or not include them (in which case
+     "A" is used as start and "B" as stop). Start and stop characters
+     in the input string can be either all lowercase or all uppercase
+     and are always printed as uppercase.
+
+PLESSEY
+     Plessey barcodes can encode all the hexadecimal digits. Alphabetic
+     digits in the input string must either be all lowercase or all
+     uppercase. The output text is always uppercase.
+
+MSI
+     MSI can only encode the decimal digits. While the standard
+     specifies either one or two check digits, the current
+     implementation in this library only generates one check digit.
+
+CODE 93
+     The code-93 standard can natively encode 48 different characters,
+     including uppercase letters, digits, the blank space, plus, minus,
+     dot, star, dollar, slash, percent, as well as five special
+     characters:  a start/stop delimiter and four "shift characters"
+     used for extended encoding.    Using this "extended encoding"
+     method, any standard 7-bit ASCII character can be encoded, but it
+     takes up two symbol lengths in barcode if the character is not
+     natively supported (one of the 48).  The encoder here fully
+     implements the code 93 encoding standard.  Any characters natively
+     supported (A-Z, 0-9, ".+-/$&%") will be encoded as such - for any
+     other characters (such as lower case letters, brackets,
+     parentheses, etc.), the encoder will revert to extended encoding.
+     As a note, the option to exclude the checksum will eliminate the
+     two modulo-47 checksums (called C and K) from the barcode, but this
+     probably will make it unreadable by 99% of all scanning systems.
+     These checksums are specified to be used at the firmware level,
+     and their absence will be interpreted as an invalid barcode.
+
+
+
+
+*Node: PCL Output
+                               PCL Output
+                               **********
+
+   While the default output is Postscript (possibly EPS), and Postscript
+can be post-processed to almost anything, it is sometimes desirable to
+create output directly usable by the specific printer at hand.  PCL is
+currently supported as an output format for this reason.  Please note
+that the Y coordinate for PCL goes from top to bottom, while for
+Postscript it goes from bottom to top. Consistently, while in
+Postscript you specify the bottom-left corner as origin, for PCL you
+specify the top-left corner.
+
+   Barcode output for PCL Printers (HP LaserJet and compatibles), was
+developed using PCL5 Reference manuals from HP.  that really refers to
+these printers:
+   * LaserJet III, III P, III D, III Si,
+
+   * LaserJet 4 family
+
+   * LaserJet 5 family
+
+   * LaserJet 6 family
+
+   * Color LaserJet
+
+   * DeskJet 1200 and 1600.
+
+
+   However, barcode printing uses a very small subset of PCL, probably
+also LaserJet II should print it without problem, but the resulting
+text may be horrible.
+
+   The only real difference from one printer to another really depends
+on which font are available in the printer, used in printing the label
+associated to the bars (if requested).
+
+   Earlier LaserJet supports only bitmaps fonts, so these are not
+"scalable". (Ljet II ?), Also these fonts, when available, have a
+specified direction, and not all of them are available in both Portrait
+and Landscape mode.
+
+   From LaserJet 4 series, (except 4L/5L that are entry-level printers),
+Arial scalable font should be available, so it's the "default font"
+used by this program.
+
+   LaserJet III series printers (and 4L, 5L), don't feature "Arial" as a
+resident font, so you should use BARCODE_OUT_PCL_III instead of
+BARCODE_OUT_PCL., and font the font used will be "Univers" instead of
+"Arial".
+
+   Results on compatible printers, may depend on consistency of PCL5
+compatibility, in doubt, try BARCODE_OUT_PCL_III
+
+   PJL commands are not used here, as it's not very compatible.
+
+   Tested Printers:
+   * Hp LaserJet 4050
+
+   * Hp LaserJet 2100
+
+   * Epson N-1200 emul PCL
+
+   * Toshiba DP2570 (copier) + PCL option
+
+   * Epson EPL-7100 emul. HP LaserJet II: bars print fine but text is
+     bad.
+
+
+
+
+*Node: Bugs and Pending Issues
+                               Bugs and Pending Issues.
+                               ************************
+
+   The current management of borders/margins is far from optimal. The
+"default" margin applied by the library interferes with the external
+representation, but I feel it is mandatory to avoid creating barcode
+output with no surrounding white space (the problem is especially
+relevant for EPS output).
+
+   EAN-128 is not (yet) supported. I plan to implement it pretty soon
+and then bless the package as version 1.0.
+
+
+
+
+
+Tag Table:Node: Top\7f154
+                               Node: Overview\7f526
+                               Node: The Barcode Object\7f1404
+Node: The Field List\7f2821
+Node: The Intermediate Representation\7f6586
+Node: Supported Flags\7f8359
+Node: The API\7f11343
+Node: The barcode Executable\7f14029
+Node: The Command Line\7f14458
+Node: Supported Encodings\7f19557
+Node: PCL Output\7f28997
+Node: Bugs and Pending Issues\7f31316
+
+
+
+End Tag Table
\ No newline at end of file