cb@cci632.UUCP (Just another hired gun (n2hkd)) (04/26/89)
This is one of those "I'm stumped" questions. What we would like to do is be able to create and display bar codes in Pagemaker or illustrator (etc) or import them so that we can place them in the page makeup programs. This will allow us to print them on the laser and our L300 typesetter. I'v been looking and asking and every one looks at me and says "I'll have to get back to you". For some of the applications we have we need bar codes (ie look at a domestic box of 35mm film and count). We can do this on Atex - monotype and on Purup but, we'd really like to be able to do it on a desktop platform. Any ideas would be greatly appreciated, else I may be forced to create this monster myself. Thanks. Curtis (cb@cci632 or !rochester!kodak!n2hkd!curtis)
thomson@beaches.toronto.edu (Brian Thomson) (06/05/90)
Since the topic of barcodes has come up, and we have seen a (programmed) definition of code39, does anyone have a definition of UPC code they could post? Curiously yours, -- Brian Thomson, CSRI Univ. of Toronto utcsri!uthub!thomson, thomson@hub.toronto.edu
jad@dayton.UUCP (J. Deters) (06/09/90)
> Article <1990Jun4.222656.2821@jarvis.csri.toronto.edu> From: thomson@beaches.toronto.edu (Brian Thomson) >Since the topic of barcodes has come up, and we have seen a (programmed) >definition of code39, does anyone have a definition of UPC code they >could post? > Curiously yours, > Brian Thomson, CSRI Univ. of Toronto > utcsri!uthub!thomson, thomson@hub.toronto.edu Here's a UPC definition I grabbed off the net a few years back. I've rewritten the upc shell script to include the HRI code underneath and beside the bars (just like on a milk carton!) Wow. Many thanks to the original poster of this font. We used it to produce our code books for our Estee Lauder cosmetics counter. -j -----8<-----Cut Here-----8<-----Cut Here-----8<-----Cut Here----- #! /bin/sh # This is a shell archive, meaning: # 1. Remove everything above the #! /bin/sh line. # 2. Save the resulting text in a file. # 3. Execute the file with /bin/sh (not csh) to create: # README # upc.pro # upc # This archive created: Fri Jun 8 13:08:43 1990 # By: J. Deters (Terrapin Transit Authority) export PATH; PATH=/bin:/usr/bin:$PATH if test -f 'README' then echo shar: "will not over-write existing file 'README'" else cat << \SHAR_EOF > 'README' Enclosed is a UN!X shell script, upc, that builds and prints a UPC code on a page. Also enclosed is the file upc.pro, a PostScript definition of the UPC font. To print a UPC code with the script: $ upc 0 12345 67890 | to your favorite printer. WARNING: I had some trouble with this font on our 300 dpi Dijit 1/PS printers and a Barcode Industries scanner. The line thickness of any stripe may be off by one pixel row due to rounding differences. What happened in our case was: We printed a UPC book with bar codes in two columns. The codes in the first column scanned fine, but the second column had problems unless we turned the scanner upside down! It turned out that the proportional width of the first bar in the code to the other bars was significant to this scanner's recognition software. Since the first guard bar didn't exactly match the second guard bar, it was not recognized. A quick modification to the scale at which we printed the barcode fixed the problem, but since each printer is different, your mileage may vary. SHAR_EOF fi if test -f 'upc.pro' then echo shar: "will not over-write existing file 'upc.pro'" else cat << \SHAR_EOF > 'upc.pro' %% %% Universal Product Code font %% Copyright (C) 1986 by Pipeline Associates, Inc. %% Permission is granted to use and distribute as long as this copyright %% notice remains intact and it is distributed free of charge. %% /UPCFontDict 8 dict def /workdict 25 dict def %% load up drawing procedures workdict begin /mymove {transform round exch round exch itransform moveto} bind def /gray 0 def /d1 { 1.3 setlinewidth 1 0 mymove 1 100 lineto stroke 2 0 translate } bind def /d2 { 3.3 setlinewidth 2 0 mymove 2 100 lineto stroke 4 0 translate } bind def /d3 { 5.3 setlinewidth 3 0 mymove 3 100 lineto stroke 6 0 translate } bind def /d4 { 7.3 setlinewidth 4 0 mymove 4 100 lineto stroke 8 0 translate } bind def /cline1 { 1 gray sub setgray d1 } bind def /cline2 { 1 gray sub setgray d2 } bind def /cline3 { 1 gray sub setgray d3 } bind def /cline4 { 1 gray sub setgray d4 } bind def /line1 { gray setgray d1 } bind def /line2 { gray setgray d2 } bind def /line3 { gray setgray d3 } bind def /line4 { gray setgray d4 } bind def end /switch { workdict begin /gray 1 gray sub def end } def UPCFontDict begin /FontType 3 def /FontMatrix [.01 0 0 .015 0 0] def /FontBBox [0 0 10 100] def /Encoding 128 array def /Widths 128 array def %% fill the Encoding array with the procs to run for each character 0 1 127 {Encoding exch /.notdef put} for Encoding (0) 0 get /zero put Encoding (1) 0 get /one put Encoding (2) 0 get /two put Encoding (3) 0 get /three put Encoding (4) 0 get /four put Encoding (5) 0 get /five put Encoding (6) 0 get /six put Encoding (7) 0 get /seven put Encoding (8) 0 get /eight put Encoding (9) 0 get /nine put Encoding ( ) 0 get /space put Encoding (|) 0 get /bar put Widths (0) 0 get 14 put Widths (1) 0 get 14 put Widths (2) 0 get 14 put Widths (3) 0 get 14 put Widths (4) 0 get 14 put Widths (5) 0 get 14 put Widths (6) 0 get 14 put Widths (7) 0 get 14 put Widths (8) 0 get 14 put Widths (9) 0 get 14 put Widths ( ) 0 get 2 put Widths (|) 0 get 2 put %% define the procs /CharProcs 20 dict def CharProcs /.notdef {} put CharProcs /zero { cline3 line2 cline1 line1 } put CharProcs /one { cline2 line2 cline2 line1 } put CharProcs /two { cline2 line1 cline2 line2 } put CharProcs /three { cline1 line4 cline1 line1 } put CharProcs /four { cline1 line1 cline3 line2 } put CharProcs /five { cline1 line2 cline3 line1 } put CharProcs /six { cline1 line1 cline1 line4 } put CharProcs /seven { cline1 line3 cline1 line2 } put CharProcs /eight { cline1 line2 cline1 line3 } put CharProcs /nine { cline3 line1 cline1 line2 } put CharProcs /space { } put CharProcs /bar { line1 } put %% BuildChar is called by PS whenever a character is to be imaged out %% of UPC /BuildChar { workdict begin /char exch def /fontdict exch def /charname fontdict /Encoding get char get def /charproc fontdict /CharProcs get charname get def /charwidth fontdict /Widths get char get def charwidth 0 setcharwidth gsave charproc grestore end } bind def end %% register font in postscript font machinery /UPC UPCFontDict definefont pop SHAR_EOF fi if test -f 'upc' then echo shar: "will not over-write existing file 'upc'" else cat << \SHAR_EOF > 'upc' #!/bin/sh # upc -- print upc code with PostScript # usage: upc prod code-5 code-5 # prod is the product type (zero for store items) # code-5 is a five digit code (needs two of these) # Copyright (C) 1986 by Pipeline Associates, Inc. # Permission is granted to use and distribute as long as this copyright # notice remains intact and it is distributed free of charge. UPCFONT=./upc.pro X=1 # x coordinate of lower right corner (in inches) Y=1 # x coordinate of lower right corner (in inches) # calculate checksum SUM=`echo "$2 $3 $2 $3" | sed " 1s/\(.\)\(.\)\(.\)\(.\)\(.\)/a=$1 + \2 + \4/ 2s/\(.\)\(.\)\(.\)\(.\)\(.\)/b=\1 + \3 + \5/ 3s/\(.\)\(.\)\(.\)\(.\)\(.\)/c=\1 + \3 + \5/ 4s/\(.\)\(.\)\(.\)\(.\)\(.\)/s=(a+b)*3+c+\2+\4;(10-(s%10))%10/" | bc` cat $UPCFONT echo "gsave $X 72 mul $Y 72 mul translate /UPC findfont 50 scalefont setfont /startbars (| |) def 0 0 moveto startbars show ($1$2 | | ) show switch ($3$SUM) show switch startbars show 0 setlinecap 12 setlinewidth /sx1 (| |$1) stringwidth pop def /sl2 ($2) stringwidth pop def /sx2 (| |$1$2 | | ) stringwidth pop def /sl3 ($3) stringwidth pop def 1 setgray sx1 0 moveto sl2 0 rlineto stroke sx2 0 moveto sl3 0 rlineto stroke 0 setgray /Helvetica findfont 12 scalefont setfont -15 30 moveto ($1) show sx1 -4 moveto ($2) show sx2 -4 moveto ($3) show 100 30 moveto ($SUM) show grestore showpage" SHAR_EOF chmod +x 'upc' fi exit 0 # End of shell archive -- J. Deters +---------+ INTERNET: jad@dayton.DHDSC.MN.ORG | S H * T | UUCP: ...!bungia!dayton!jad +---------+ ICBM: 44^58'36"N by 93^16'12"W "Vanna, I'd like to buy a vowel."
esa@tglobe2.tollpost-globe (Esa K Viitala) (02/27/91)
Hi, I'm interested in PostScript code generating barcodes. Like ZIP codes, and other stuff. Anybody got anything? Please mail me directly. ---ekv -- Esa Viitala, TOLLPOST-GLOBE A/S, Systems Department, PO Box 100, N6301 ]ndalsnes, Norway Tel: (+47 72) 21211 / 264, Fax: (+47 72) 22161 E-mail: ...!mcsun!nuug!tglobe2!esa