HP used to have an option where you could get font cartriges to put into
the printer so that the optional fonts would always be accessable. I am
surprised that they did not mention this. Maybe bring this up with HP
(purchasing, not support!) and see what happens.
MJG
A novel solution provided by Cobra Systems is a small "black box" that
sits inline before the parallel port and adds barcode functionality to
most laser printers. This will definitely work for your app: It does not
depend on a font cart slot, does not need to be downloaded from Pick (a
tedious and potentially slow process) and will even support PDF417
symbologies!
-Will Campbell
-Will Campbell>
Hi Will,
The problem with the black box is that since I anticipate putting out
about 50 of these pretty quickly I would need 50 black boxes which
adds to the cost overall (certainly a possibility, depending on cost).
I'd like to find a software solution, ideally, that is reusable.
Thanks,
Jeff
I print barcodes directly to any HP compatible printer by using rectangle
commands. I don't use black boxes, font cartridges or softfonts to do it,
just a callable subroutine. Contrary to what barcode equipment vendors
will tell you, printing barcodes is easy - just another character set.
If you'd like, I'll email you a copy of one.
Regards,
Charlie
In article <19961231214...@ladder01.news.aol.com>, qs...@aol.com
(QSSJC) writes:
>Subject: Printing Barcodes on HP 5L
>From: qs...@aol.com (QSSJC)
>Date: 31 Dec 1996 21:42:20 GMT
>
>Hi Group,
>I need to print barcodes on an HP 5L. HP says I need to
>buy the "Barcodes & More" softfonts that get downloaded
>to the printer. After that I presume I can use escape sequences
>to print the barcodes.
>Problem is that if the printer gets turned off yuo have to download
>the softfont again.
>There has to be a way to do this direct from AP.
>Anyone know it? If there's a good package out there already I'm
>happy to purchase it.
>Thanks,
>Jeff
Charlie Noah cwn...@aol.com
Affiliated Acceptance Corp.
Kansas City, Missouri
>Hi Group,
>I need to print barcodes on an HP 5L.
I print bar codes with an HP4+ and assume it is the same. When I
started on the project (a little over a year ago), there was only one
package available, and it did not print the bar codes I needed (128,
I2of5 and UPC). I purchased a cartridge from HP with the bar codes I
needed, then wrote the escape sequences to print the bar code.
Printing the bar codes with their cartridge is another story. There is
no easy/direct way to do it (as it is with a regular bar code
printer). You must do all sorts of calculations to get the bar
correct.
If you want more information, e-mail me privately and I will give you
my phone number.
Buddy Myers
bu...@vm.org
You might want to check with SKP. They have created barcode routines
for dot matrix printers, and if memory serves me correctly, laser
printers.
rg
We have a software solution for printing Code39 bar codes on laser
printers. In the next few weeks the Postnet code will be added. I will
email a brief documentation file to you.
If this approach seems of interest to you, contact me by email.
George Shaunfield
AccounTron
QSSJC wrote:
>
> Hi Group,
You've probably found an answer to your question by now, but I thought I would
post a reply anyway.
Here is a program I wrote several years ago to print code 128 on an HP laserjet
printer. It uses standard PCL commands which will work on any HP LaserJet
series II or newer. Code 128 is the only format we use, so it's the only one
that I have a program for.
(note that the 'y' character with the accent is a value mark)
SUBROUTINE PLS.BAR128 (WIDTH, HEIGHT, ORIEN, VALUE)
** PURPOSE : PRINT BARCODE (CODE 128) ON HP LASERJET PRINTERS
** RELEASE : 4.0
** COPYRIGHT : CONFIDENTIAL AND PROPRIETARY
** : COPYRIGHT 1991 PRECISION DYNAMICS CORPORATION
** : ALL RIGHTS RESERVED
** : UNPUBLISHED
**
************************** R E V I S I O N S ****************************
* 000, 04-27-93, , DFC: initial code
*************************************************************************
*//////////////
* DOCUMENTATION
*\\\\\\\\\\\\\\
* This subroutine is used to print bar codes HP laserjet printers using
* the Printer Control Language.
*
* WIDTH (input) - If a whole number is passed it will be the number of
* dots for a single bar (300 dpi). If a number less
* one is used it is assumed to be inches for a single
* bar (ex .010 is the same as 3 dots). If the value
* is null or zero the default of 3 dots (.010") will be
* used. (max is 15 dots or .5")
*
* HEIGHT (input) - If a whole number is passed it will be the number of
* dots for the overall barcode height (300 dpi). If a
* decimal number is used, it is assumed to be inches.
* (ex. for a 1/2 inch barcode use 150 or .5). The
* maximum is 900 dots or 3.0 inches.
*
* ORIEN (input) - Orientation of the barcode. Use "0" for horizontal
* (lines going up and down) and "1" for vertical. The
* default is zero.
*
* VALUE (input) - This is the actual data to be encoded.
*
* Note: The barcode is printed from the current cursor position. After
* the barcode is printed the cursor is repositioned back to its
* original coordinates.
*///////////
* INITIALIZE
*\\\\\\\\\\\
EQU TRUE TO 1, FALSE TO 0
EQU BS TO CHAR(8), ESC TO CHAR(27)
EQU CODEA TO 1, CODEB TO 2, CODEC TO 3 ;* code fields
TABLE = ''
FLD = 0
FOR I = 32 TO 95
FLD += 1
TABLE<1,FLD> = CHAR(I)
NEXT I
FOR I = 0 TO 31
FLD += 1
TABLE<1,FLD> = CHAR(I)
NEXT I
FOR I = 32 TO 127
TABLE<2,I-31> = CHAR(I)
NEXT I
FOR I = 0 TO 99
TABLE<3,I+1> = I'R%2'
NEXT I
TABLE<4>="212222ı222122ı222221ı121223ı121322ı131222ı122213ı122312"
TABLE<4,-1>="132212ı221213ı221312ı231212ı112232ı122132ı122231"
TABLE<4,-1>="113222ı123122ı123221ı223211ı221132ı221231ı213212"
TABLE<4,-1>="223112ı312131ı311222ı321122ı321221ı312212ı322112"
TABLE<4,-1>="322211ı212123ı212321ı232121ı111323ı131123ı131321"
TABLE<4,-1>="112313ı132113ı132311ı211313ı231113ı231311ı112133"
TABLE<4,-1>="112331ı132131ı113123ı113321ı133121ı313121ı211331"
TABLE<4,-1>="231131ı213113ı213311ı213131ı311123ı311321ı331121"
TABLE<4,-1>="312113ı312311ı332111ı314111ı221411ı431111ı111224"
TABLE<4,-1>="111422ı121124ı121421ı141122ı141221ı112214ı112412"
TABLE<4,-1>="122114ı122411ı142112ı142211ı241211ı221114ı413111"
TABLE<4,-1>="241112ı134111ı111242ı121142ı121241ı114212ı124112"
TABLE<4,-1>="124211ı411212ı421112ı421211ı212141ı214121ı412121"
TABLE<4,-1>="111143ı111341ı131141ı114113ı114311ı411113ı411311"
TABLE<4,-1>="113141ı114131ı311141ı411131ı211412ı211214ı211232"
TABLE<4,-1>="2331112"
IF WIDTH = "" OR WIDTH = "0" OR NOT(NUM(WIDTH)) THEN WIDTH = 3
IF INDEX(WIDTH,".",1) THEN WIDTH = (300 * WIDTH) 'R#0'
IF WIDTH > 15 THEN WIDTH = 15
IF HEIGHT = "" OR HEIGHT = "0" OR NOT(NUM(HEIGHT)) THEN
HEIGHT = 150
END
IF INDEX(HEIGHT,".",1) THEN HEIGHT = (300 * HEIGHT) 'R#0'
IF HEIGHT > 900 THEN HEIGHT = 900
IF ORIEN # 1 THEN ORIEN = FALSE ELSE ORIEN = TRUE
CHECKSUM = 0
BAR.CNT = 0
POSX = 0
POSY = 0
*/////
* MAIN
*\\\\\
* print the start code
BEGIN CASE
CASE VALUE[1,4] MATCHES "4N"
CODE.FLD = CODEC
POS = 106
CASE VALUE[1,1] < CHAR(32) ;* control character
CODE.FLD = CODEA
POS = 104
CASE TRUE
CODE.FLD = CODEB
POS = 105
END CASE
GOSUB PRINT.BAR
* print the bar code for each character
ICNT = LEN(VALUE)
FOR I = 1 TO ICNT
BEGIN CASE
CASE CODE.FLD # CODEC AND VALUE[I,6] MATCHES "6N"
POS = 100 ;* from A or B to C
GOSUB PRINT.BAR
CODE.FLD = CODEC
CASE CODE.FLD = CODEC AND NOT(VALUE[I,2] MATCHES "2N")
CHR = VALUE[I,1]
LOCATE CHR IN TABLE<CODEB> SETTING FND THEN
POS = 101 ;* from C to B
GOSUB PRINT.BAR
CODE.FLD = CODEB
END ELSE
POS = 102 ;* from C to A
GOSUB PRINT.BAR
CODE.FLD = CODEA
END
END CASE
IF CODE.FLD = CODEC THEN
CHR = VALUE[I,2]
I += 1
END ELSE
CHR = VALUE[I,1]
END
LOCATE CHR IN TABLE<CODE.FLD> SETTING POS ELSE
BEGIN CASE
CASE CODE.FLD = CODEA
POS = 101 ;* from A to B
GOSUB PRINT.BAR
CODE.FLD = CODEB
CASE CODE.FLD = CODEB
POS = 102 ;* from B to A
GOSUB PRINT.BAR
CODE.FLD = CODEA
END CASE
LOCATE CHR IN TABLE<CODE.FLD> SETTING POS ELSE
PRINT "BAR-ERROR!":
RETURN ;* error
END
END
GOSUB PRINT.BAR
NEXT I
* print the modulo 103 check character
POS = MOD(CHECKSUM,103) + 1
GOSUB PRINT.BAR
* print the stop character
POS = 107
GOSUB PRINT.BAR
* reposition the cursor
PRINT ESC:"*p-":POSX:"x-":POSY:"Y":
RETURN
*////////////
* SUBROUTINES
*\\\\\\\\\\\\
*********
PRINT.BAR:
*********
BAR.PATTERN = TABLE<4,POS>
JCNT = LEN(BAR.PATTERN)
FOR J = 1 TO JCNT STEP 2
BAR = BAR.PATTERN[J,1]
SPC = BAR.PATTERN[J+1,1]
IF NOT(ORIEN) THEN
PRINT ESC:"*c":BAR*WIDTH:"a":HEIGHT:"b0P":
NEWX = (BAR*WIDTH)+(SPC*WIDTH)-1
PRINT ESC:"*p+":NEWX:"x+0Y":
POSX += NEWX
END ELSE
PRINT ESC:"*c":HEIGHT:"a":BAR*WIDTH:"b0P":
NEWY = (BAR*WIDTH)+(SPC*WIDTH)-1
PRINT ESC:"*p+0x+":NEWY:"Y":
POSY += NEWY
END
NEXT J
IF BAR.CNT = 0 THEN
CHECKSUM += (POS-1)
END ELSE
CHECKSUM += (POS-1) * BAR.CNT
END
BAR.CNT += 1
RETURN
END
--
David Church, Systems Engineer
Precision Dynamics Corporation