home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Source Code 1992 March
/
Source_Code_CD-ROM_Walnut_Creek_March_1992.iso
/
usenet
/
altsrcs
/
1
/
1212
< prev
next >
Wrap
Internet Message Format
|
1990-12-28
|
5KB
From: mjj@stda.jhuapl.edu (Marshall Jose)
Newsgroups: alt.sources
Subject: [comp.periphs.printers] Re: Universal bar code and USPS bar code
Message-ID: <11767@stag.math.lsa.umich.edu>
Date: 20 Apr 90 16:28:44 GMT
Archive-name: upc/19-Apr-90
Original-posting-by: mjj@stda.jhuapl.edu (Marshall Jose)
Original-subject: Re: Universal bar code and USPS bar code
Reposted-by: emv@math.lsa.umich.edu (Edward Vielmetti)
[This is an experimental alt.sources re-posting from the newsgroup(s)
comp.periphs.printers. Comments on this service to emv@math.lsa.umich.edu
(Edward Vielmetti).]
In article <29057@cup.portal.com> John_A_Pham@cup.portal.com writes:
> I'm looking for any algorithms or references to algorithms on how
>to print universal bar code or USPS bar code.
Here's one which appeared here a while back. Works only with PostScript,
though I suppose you could reverse-engineer it.
# To recover, type "sh archive"
echo restoring upc
sed 's/^X//' > upc <<\XxXxXxXxXx-EOF-XxXxXxXxXx
X#!/bin/sh
X# upc -- print upc code with PostScript
X# usage: upc prod code-5 code-5
X# prod is the product type (zero for store items)
X# code-5 is a five digit code (needs two of these)
X
X# Copyright (C) 1986 by Pipeline Associates, Inc.
X# Permission is granted to use and distribute as long as this copyright
X# notice remains intact and it is distributed free of charge.
X
XUPCFONT=./upc.pro
XX=1 # x coordinate of lower right corner (in inches)
XY=1 # x coordinate of lower right corner (in inches)
X
X# calculate checksum
Xsum=`echo "$2
X$3
X$2
X$3" | sed "
X 1s/\(.\)\(.\)\(.\)\(.\)\(.\)/a=$1 + \2 + \4/
X 2s/\(.\)\(.\)\(.\)\(.\)\(.\)/b=\1 + \3 + \5/
X 3s/\(.\)\(.\)\(.\)\(.\)\(.\)/c=\1 + \3 + \5/
X 4s/\(.\)\(.\)\(.\)\(.\)\(.\)/s=(a+b)*3+c+\2+\4;(10-(s%10))%10/" | bc`
X
Xcat $UPCFONT
Xecho "$X 72 mul $Y 72 mul translate /UPC findfont 50 scalefont setfont
X0 0 moveto
X(| |$1$2 | | ) show
Xswitch
X($3$sum) show
Xswitch
X(| |) show
Xshowpage"
XxXxXxXxXx-EOF-XxXxXxXxXx
echo restoring upc.pro
sed 's/^X//' > upc.pro <<\XxXxXxXxXx-EOF-XxXxXxXxXx
X%%
X%% Universal Product Code font
X%% Copyright (C) 1986 by Pipeline Associates, Inc.
X%% Permission is granted to use and distribute as long as this copyright
X%% notice remains intact and it is distributed free of charge.
X%%
X/UPCFontDict 8 dict def
X/workdict 25 dict def
X%% load up drawing procedures
Xworkdict begin
X /gray 0 def
X /d1 {
X 1.3 setlinewidth
X 1 0 moveto 1 100 lineto stroke
X 2 0 translate
X } bind def
X /d2 {
X 3.3 setlinewidth
X 2 0 moveto 2 100 lineto stroke
X 4 0 translate
X } bind def
X /d3 {
X 5.3 setlinewidth
X 3 0 moveto 3 100 lineto stroke
X 6 0 translate
X } bind def
X /d4 {
X 7.3 setlinewidth
X 4 0 moveto 4 100 lineto stroke
X 8 0 translate
X } bind def
X /cline1 {
X 1 gray sub setgray
X d1
X } bind def
X /cline2 {
X 1 gray sub setgray
X d2
X } bind def
X /cline3 {
X 1 gray sub setgray
X d3
X } bind def
X /cline4 {
X 1 gray sub setgray
X d4
X } bind def
X /line1 {
X gray setgray
X d1
X } bind def
X /line2 {
X gray setgray
X d2
X } bind def
X /line3 {
X gray setgray
X d3
X } bind def
X /line4 {
X gray setgray
X d4
X } bind def
Xend
X/switch {
X workdict begin /gray 1 gray sub def end
X } def
X
XUPCFontDict begin
X/FontType 3 def
X/FontMatrix [.01 0 0 .015 0 0] def
X/FontBBox [0 0 10 100] def
X/Encoding 128 array def
X/Widths 128 array def
X
X%% fill the Encoding array with the procs to run for each character
X0 1 127 {Encoding exch /.notdef put} for
XEncoding (0) 0 get /zero put
XEncoding (1) 0 get /one put
XEncoding (2) 0 get /two put
XEncoding (3) 0 get /three put
XEncoding (4) 0 get /four put
XEncoding (5) 0 get /five put
XEncoding (6) 0 get /six put
XEncoding (7) 0 get /seven put
XEncoding (8) 0 get /eight put
XEncoding (9) 0 get /nine put
XEncoding ( ) 0 get /space put
XEncoding (|) 0 get /bar put
X
XWidths (0) 0 get 14 put
XWidths (1) 0 get 14 put
XWidths (2) 0 get 14 put
XWidths (3) 0 get 14 put
XWidths (4) 0 get 14 put
XWidths (5) 0 get 14 put
XWidths (6) 0 get 14 put
XWidths (7) 0 get 14 put
XWidths (8) 0 get 14 put
XWidths (9) 0 get 14 put
XWidths ( ) 0 get 2 put
XWidths (|) 0 get 2 put
X
X%% define the procs
X/CharProcs 20 dict def
XCharProcs /.notdef {} put
XCharProcs /zero {
X cline3 line2 cline1 line1
X} put
XCharProcs /one {
X cline2 line2 cline2 line1
X} put
XCharProcs /two {
X cline2 line1 cline2 line2
X} put
XCharProcs /three {
X cline1 line4 cline1 line1
X} put
XCharProcs /four {
X cline1 line1 cline3 line2
X} put
XCharProcs /five {
X cline1 line2 cline3 line1
X} put
XCharProcs /six {
X cline1 line1 cline1 line4
X} put
XCharProcs /seven {
X cline1 line3 cline1 line2
X} put
XCharProcs /eight {
X cline1 line2 cline1 line3
X} put
XCharProcs /nine {
X cline3 line1 cline1 line2
X} put
XCharProcs /space {
X} put
XCharProcs /bar {
X line1
X} put
X%% BuildChar is called by PS whenever a character is to be imaged out
X%% of UPC
X/BuildChar {
X workdict begin
X /char exch def
X /fontdict exch def
X /charname fontdict /Encoding get char get def
X /charproc fontdict /CharProcs get charname get def
X /charwidth fontdict /Widths get char get def
X charwidth 0 setcharwidth
X gsave
X charproc
X grestore
X end
X} bind def
Xend
X%% register font in postscript font machinery
X/UPC UPCFontDict definefont pop
XxXxXxXxXx-EOF-XxXxXxXxXx
Marshall Jose WA3VPZ
mjj%stda@aplcen.apl.jhu.edu || ...mimsy!aplcen!aplvax!mjj