postnet:   USPS POSTNET Barcode Encoding
1 Introduction
2 Encoding
digit-list->postnet
char-list->postnet
string->postnet
3 Debugging
postnet->debug-string
4 History
5 Legal
2:0

postnet: USPS POSTNET Barcode Encoding🔗ℹ

Neil Van Dyke

 (require postnet) package: postnet

1 Introduction🔗ℹ

This postnet Racket package can be used to generate the United States Postal Service POSTNET barcode binary pattern, as described in Chapter 4 of USPS Publication 25, “Designing Letter and Reply Mail,” dated 2003-06. This package supports ZIP, ZIP+4, and DBPC codes.
The generated binary representation is a Racket list of boolean values. Separate code must be written to render this representation to a particular printing devices.

2 Encoding🔗ℹ

There are several procedures for encoding POSTNET from various input representations. It is suspected that most applications will encode from a string representation, using string->postnet.

procedure

(digit-list->postnet digits)  (listof boolean?)

  digits : (listof exact-positive-integer?)
Yields a POSTNET encoding of a list of digit numbers. For example:

> (digit-list->postnet '(1 2 3 4 5))

  (#t #f #f #f #t #t #f #f #t #f #t #f #f #t #t #f
      #f #t #f #f #t #f #t #f #t #f #f #t #f #t #f #t)

procedure

(char-list->postnet chars)  (listof boolean?)

  chars : (listof char?)
Yields a POSTNET encoding of a list of characters. For example:

> (char-list->postnet '(#\1 #\2 #\3 #\4 #\5))

  (#t #f #f #f #t #t #f #f #t #f #t #f #f #t #t #f
      #f #t #f #f #t #f #t #f #t #f #f #t #f #t #f #t)

procedure

(string->postnet str)  (listof boolean?)

  str : string?
Yields a POSTNET encoding of a string. For example:

> (string->postnet "12345-6789 01")

  (#t #f #f #f #t #t #f #f #t #f #t #f #f #t #t #f
      #f #t #f #f #t #f #t #f #t #f #f #t #t #f #f #t
      #f #f #f #t #t #f #f #t #f #t #f #t #f #f #t #t
      #f #f #f #f #f #f #t #t #f #t #f #f #t #t)

3 Debugging🔗ℹ

Although this package does not render POSTNET for OCR use, for debugging purposes, the postnet->debug-string procedure can be used to approximate the barcode visually, using ASCII characters.

procedure

(postnet->debug-string postnet)  string?

  postnet : (listof boolean?)
Yields a string visual approximation of a POSTNET encoding. For example:
> (postnet->debug-string (string->postnet "12345"))
  "|...||..|.|..||..|..|.|.|..|.|.|"

4 History🔗ℹ

5 Legal🔗ℹ

Copyright 2004, 2005, 2009, 2011, 2016 Neil Van Dyke. This program is Free Software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but without any warranty; without even the implied warranty of merchantability or fitness for a particular purpose. See http://www.gnu.org/licenses/ for details. For other licenses and consulting, please contact the author.