Barcode Writer in Pure Postscript is an award-winning open source barcode maker that facilitates the printing of all major barcode symbologies entirely within level 2 PostScript, ideal for variable data printing. The complete process of generating printed barcodes is performed entirely within the printer (or print system) so that it is no longer the responsibility of your application or a library. There is no need for any barcode fonts and the flexibility offered by direct PostScript means you can avoid re-implementing barcode generator code or migrating to new libraries whenever your project language needs change.
The project homepage is at http://bwipp.terryburton.co.uk
This is the main resource for the project providing the latest downloads of code and documentation, as well as access to the support and development mailing list.
To make it as easy as possible to incorporate this project into your own systems, whether they be freely available or proprietary, it is licensed under the permissive MIT/X-Consortium License.
This documentation is auto-generated from the BWIPP wiki at https://github.com/bwipp/postscriptbarcode/wiki using the pandoc-based build system in the
wikidocs/__pandoc/
directory of the BWIPP repository:
https://github.com/bwipp/postscriptbarcode.git
Useful links:
Barcode Writer in Pure Postscript (BWIPP) generates all barcode formats entirely within PostScript so that the process of converting the input data into the printed output can be performed by the printer or RIP itself. This is ideal for variable data printing (VDP) and avoids the need to re-implement the barcode generation process whenever your language needs change.
Since this resource is written in PostScript and interpreted within the virtual machine of a printer it is compatible with any operating system and hardware platform.
It makes including any barcode within a PostScript document as simple as inserting the following directive:
0 0 moveto (978-1-56581-231-4) (includetext)
/isbn /uk.co.terryburton.bwipp findresource exec
There is a web-based demonstration of the project here:
http://www.terryburton.co.uk/barcodewriter/generator/
This project is dedicated to the memory of Craig K. Harmon. https://qed.org/ckh
BWIPP is essentially a set of generic PostScript Level 2 named resources that are provided in four flavours for ease of use. The one to use depends on how you intend to deploy the library.
"Packaged" or "unpackaged": The named resources have been packaged for DSC conformance, portability and ease of distribution. You will most likely want to use a packaged flavour in production, however the unpackaged versions of the resources are useful for understanding the code, developing the library and debugging.
"Separate files" or "monolithic": The resource is provided as separate files that are formatted for direct use by Adobe Distiller, GhostScript, a printer hard disk or a document manager. The monolithic flavours contain all of the resources in a single file that is suitable for inclusion in the Prolog section of a each PostScript document or installing to a printer's initial job VM to provide persistence between jobs until the device is reset.
This leads to the following set of four files.
For production use:
postscriptbarcode-packaged-resource
– Packaged; Separate files.postscriptbarcode-monolithic-package
– Packaged; Monolithic file.For BWIPP development:
postscriptbarcode-resource
– Unpackaged; Seperate files.postscriptbarcode-monolithic
– Unpackaged; Monolithic file.You can download prepared packages and the sources from here:
https://github.com/bwipp/postscriptbarcode/releases/latest
Alternatively you can get and build the latest from version control:
git clone https://github.com/bwipp/postscriptbarcode.git
cd postscriptbarcode
make
The flavours are built into subdirectories of the build/
directory.
The build requirements are Perl, GNU Make and GhostScript.
Using Barcode Writer in Pure PostScript requires only some basic PostScript knowledge that is easily learned by experimentation. If you do not want to get your hands messy playing with PostScript then you can use one of the project's frontends which hide many of the details.
The best way to get familiar with using the code is to download the monolithic flavour of the latest release and open the barcode_with_sample.ps
file with a text editor.
This file consists of the following sections:
%!PS
.%
.uk.co.terryburton.bwipp
category of named resources.% --BEGIN RENDERER ...--
and % --END RENDERER ...--
.% --BEGIN ENCODER ...--
and % --END ENCODER ...--
.% --BEGIN SAMPLE--
and % --END SAMPLE--
.This is one example from the samples:
150 750 moveto (0123456789) (includetext height=0.75)
/interleaved2of5 /uk.co.terryburton.bwipp findresource exec
The meaning of each component of the invocation is as follows:
150 750 moveto % The position of the symbol on the canvas
(0123456789) % The data field: Contents to encode in the barcode
(includetext height=0.75) % The options field: Properties of the symbol
/interleaved2of5 % The type of barcode, often called the "symbology"
/uk.co.terryburton.bwipp findresource exec % Call to plot symbol on the canvas
The acceptable contents of the data field varies between symbologies as defined in the symbology reference.
The acceptable contents of the options field is for the most part common across all of the symbologies as defined in the options reference, however encoder-specific options do exist in some cases and the default values of permitted options varies across symbologies.
Using the references mentioned above you should now be able to experiment by carefully amending the sample section of the file and observing the effect on the graphical output.
You will want to view the result of your changes regularly (since bugs may be hard to track down once introduced) either by using a software PostScript interpreter alongside a viewer or by sending the file to a PostScript-enabled printer. Alternatively you can use the web-based generator.
To directly print a file to an installed, PostScript-enabled printer in Windows by printer name use the following command:
PRINT [/D:device] barcode_with_sample.ps
Alternatively for a printer attached directly to the first parallel port:
COPY /B barcode_with_sample.ps LPT1:
To directly print a file to a PostScript-enabled printer in Linux use the following command:
lpr -Pdevice -o raw barcode_with_sample.ps
Once you are comfortable with amending the barcode_with_sample.ps
file you may want to simplify the file by removing definitions for barcode formats that you do not require bearing in mind the following points:
% --REQUIRES ...
metadata. Examining the contents of the PS files created by the web-based generator at http://www.terryburton.co.uk/barcodewriter/generator/ illustrates this point. If you have downloaded the source distribution of BWIPP you can create a standalone file containing only the resources required for a particular symbology by running something like make build/standalone/code39.ps
or make build/standalone_package/code39.ps
.barcode.ps
file and use the % --BEGIN/END ENCODER ...--
and % --BEGIN/END RENDERER ...--
delimiters to extract the relevant named resource definitions into your documents. This will allow you to simply update your project to the latest version of the BWIPP resource by just replacing your barcode.ps
with the latest version.The monolithic barcode.ps
file provides Barcode Writer in Pure PostScript as generic PostScript Level 2 named resources shipped in a single file for ease of inclusion within the Prolog section of a PostScript document template or for installing into a printer's initial job VM.
Prepared tarballs of BWIPP packages into the monolithic flavours are available from https://github.com/bwipp/postscriptbarcode/releases/latest with filenames such as postscriptbarcode-monolithic
and postscriptbarcode-monolithic-package
. Alternatively you can build these flavours from source with make monolithic
or make monolithic_package
.
An application will first include the contents of barcode.ps
in the Prolog section of a PostScript file and then generate code like the following.
In the file's Setup
or PageSetup
section:
/qrcode dup /uk.co.terryburton.bwipp findresource def
and in the page description where a barcode is needed:
0 0 moveto (BWIPP) (eclevel=M) qrcode
If the application needs to import the resource under a different name to avoid a conflict, then the setup could be:
/foo /qrcode /uk.co.terryburton.bwipp findresource def
followed by:
0 0 moveto (BWIPP1) (eclevel=M) foo
0 0 moveto (BWIPP2) (eclevel=M) foo
...
(The above is analogous to from uk.co.terryburton.bwipp import qrcode as foo
in other languages.)
Or, to generate a few barcodes with no setup section or local name at all:
0 0 moveto (BWIPP) (eclevel=M) /qrcode /uk.co.terryburton.bwipp findresource exec
This technique also reduces the possibility of namespace collision when using the library's procedures with other code.
Send barcode.ps to the printer with the line true () startjob
added at the top where the parentheses contain the printer's startjob
password.
The named resources will remain available between jobs but will not persist accoss power cycles.
The contents of the Resource
directory provides Barcode Writer in Pure PostScript as generic PostScript Level 2 named resources split into seperate files structured for ease of deployment.
This standard delivery mechanism allows BWIPP resources to be added to a PostScript virtual machine's resource search path, or pre-downloaded to a printer's memory or permanent storage, or supplied by a document manager, all without any change in the code an application generates to use the resources.
Prepared tarballs of BWIPP packaged into the named resource flavours are available from https://github.com/bwipp/postscriptbarcode/releases/latest with filenames such as postscriptbarcode-resource
and postscriptbarcode-packaged-resource
. Alternatively you can build these flavours from source with make resource
or make packaged_resource
.
An application or administrator must first make the BWIPP resources available to the print system as described for a variety of situations below. An application will then generate code like the following.
In the file's Setup
or PageSetup
section:
/qrcode dup /uk.co.terryburton.bwipp findresource def
and in the page description where a barcode is needed:
0 0 moveto (BWIPP) (eclevel=M) qrcode
If the application needs to import the resource under a different name to avoid a conflict, then the setup could be:
/foo /qrcode /uk.co.terryburton.bwipp findresource def
followed by:
0 0 moveto (BWIPP1) (eclevel=M) foo
0 0 moveto (BWIPP2) (eclevel=M) foo
...
(The above is analogous to from uk.co.terryburton.bwipp import qrcode as foo
in other languages.)
Or, to generate a few barcodes with no setup section or local name at all:
0 0 moveto (BWIPP) (eclevel=M) /qrcode /uk.co.terryburton.bwipp findresource exec
This technique also reduces the possibility of namespace collision when using the library's procedures with other code.
If the definitions for the routines that generate and render the barcode are not already resident in memory then they will be fetched from a standard resource location in a way that is transparent to the user.
Unpack the contents of the Resource directory to somewhere accessible to the application.
Specify the location of the Resource files using the -sGenericResourceDir
parameter. Where this defaults to ./Resource
(or equivalent) you can omit this parameter when running GhostScript from the location of the Resource files.
A note for Windows users:
"The Windows pre-built Ghostscript binary uses a ROM file system. If you want to modify the Resources available, then ... put all the required resources on disk and tell Ghostscript to use the disk-based resources. ... You will need to download the Ghostscript source (the Resources are not currently available separately) ... modify the Resources directory and tell Ghostscript to use it by adding one of the relevant command line switches (
-I
,-sGenericResourceDir
) or possibly by setting theGS_LIB
environment variable." Thanks to Ken Sharp, http://ghostscript.com/pipermail/gs-devel/2013-December/009544.html
Unpack the contents of the Resource directory to somewhere accessible to the application. Ensure that PSRESOURCEPATH
contains the directory containing the .upr
file when Distiller is run. The contents should be a list of directories separated by colons, to be searched in order with two consecutive colons to indicate where the default location should fall within the search order.
If a printer with a hard disk option is used, the resources can be downloaded once and remain available across power cycles. Resources can be downloaded with a vendor-specific tool, or by sending them to the printer with a snippet of PostScript at the top that queries the printer for the correct file name and creates the file.
Unpack the contents of the Resource directory to somewhere accessible to your document manager software then include the %%DocumentNeededResources
and %%IncludeResource
DSC comments at the appropriate locations within your PostScript output. The document manager software can be configured to transparently insert the requested resources as necessary.
Any specific instuctions for common document manager software are welcome.
EAN-13 is an extension of the UPC-A barcode symbology that usually carries a GTIN-13. It was designed by the International Article Numbering Association in 1976 for identification of retail goods at point of sale outside of the US.
Also known as: EAN, UCC-13, European Article Number, International Article Number, JAN, JAN-13.
Variants:
99
that is used as an in-store coupon.Standards: ISO/IEC 15420, BS EN 797, GS1 General Specifications.
Identical symbols, input provided with and without a check digit:
0 0 moveto (9771473968012) (includetext guardwhitespace)
/ean13 /uk.co.terryburton.bwipp findresource exec
0 0 moveto (977147396801) (includetext guardwhitespace)
/ean13 /uk.co.terryburton.bwipp findresource exec
A symbol that includes a five-digit add-on:
0 0 moveto (9771473968012 54499) (includetext guardwhitespace)
/ean13 /uk.co.terryburton.bwipp findresource exec
EAN-8 is a shortened form of the EAN-13 barcode symbology holding less data that usually carries a GTIN-8.
Also known as: UCC-8, JAN-8.
Variants:
0
that is used for in-store coupons.Standards: ISO/IEC 15420, BS EN 797, GS1 General Specifications.
Identical symbols, input provided with and without a check digit:
0 0 moveto (01335583) (includetext)
/ean8 /uk.co.terryburton.bwipp findresource exec
0 0 moveto (0133558) (includetext)
/ean8 /uk.co.terryburton.bwipp findresource exec
Truncated with white space guards:
0 0 moveto (01335583) (includetext height=0.5 guardwhitespace)
/ean8 /uk.co.terryburton.bwipp findresource exec
The UPC-A barcode symbology is used for identification of retail goods at point of sale inside of the US. It usually carries a GTIN-12.
Also known as: UPC, UCC-12, Universal Product Code.
Variants:
Standards: ISO/IEC 15420, BS EN 797, GS1 General Specifications.
Identical symbols, input provided with and without a check digit:
0 0 moveto (788581014974) (includetext)
/upca /uk.co.terryburton.bwipp findresource exec
0 0 moveto (78858101497) (includetext)
/upca /uk.co.terryburton.bwipp findresource exec
A symbol that includes a five-digit add-on:
0 0 moveto (788581014974 54499) (includetext guardwhitespace)
/upca /uk.co.terryburton.bwipp findresource exec
UPC-E is a compacted form of the UPC-A barcode symbology that usually carries a GTIN-12 with a number system of 0 or 1 that has been zero compressed.
Variants:
Standards: ISO/IEC 15420, BS EN 797, GS1 General Specifications.
Identical symbols, input provided with and without a check digit:
0 0 moveto (01234565) (includetext)
/upce /uk.co.terryburton.bwipp findresource exec
0 0 moveto (0123456) (includetext)
/upce /uk.co.terryburton.bwipp findresource exec
A truncated symbol:
0 0 moveto (01234565) (includetext height=0.5)
/upce /uk.co.terryburton.bwipp findresource exec
An ISBN barcode is a variant of EAN-13 that is used to identify books.
Also known as: ISBN-13, International Standard Book Number, Bookland EAN-13.
Variants:
Standards: ISO 2108, ISO/IEC 15420, BS EN 797, GS1 General Specifications.
Identical symbols, input provided with and without an ISBN check digit:
0 0 moveto (978-1-873671-00-9) (includetext)
/isbn /uk.co.terryburton.bwipp findresource exec
0 0 moveto (978-1-873671-00) (includetext)
/isbn /uk.co.terryburton.bwipp findresource exec
An ISBN with a five-digit add-on:
0 0 moveto (978-1-873671-00-9 54499) (includetext guardwhitespace)
/isbn /uk.co.terryburton.bwipp findresource exec
The following ISBN-10 input will be automatically upgraded to a valid ISBN-13 symbol:
0 0 moveto (1-86074-271-2) (includetext)
/isbn /uk.co.terryburton.bwipp findresource exec
0 0 moveto (1-86074-271) (includetext)
/isbn /uk.co.terryburton.bwipp findresource exec
Note that ISBN-10 is legacy format not for use at P.O.S.
The following will generate an obsolete ISBN-10 symbol:
0 0 moveto (1-86074-271-8) (legacy includetext guardwhitespace)
/isbn /uk.co.terryburton.bwipp findresource exec
0 0 moveto (1-86074-271) (legacy includetext guardwhitespace)
/isbn /uk.co.terryburton.bwipp findresource exec
An ISMN barcode is a variant of EAN-13 with a prefix 979 that is used to identify printed music.
Also known as: International Standard Music Number, ISMN-13.
Variants:
Standards: ISO 10957, ISO/IEC 15420, BS EN 797, GS1 General Specifications.
Identical symbols, input provided with and without an ISMN check digit:
0 0 moveto (979-0-2600-0043-8) (includetext)
/ismn /uk.co.terryburton.bwipp findresource exec
0 0 moveto (979-0-2600-0043) (includetext)
/ismn /uk.co.terryburton.bwipp findresource exec
The following ISMN-10 input will be automatically upgraded to a valid ISMN-13 symbol:
0 0 moveto (M-345-24680-5) (includetext)
/ismn /uk.co.terryburton.bwipp findresource exec
0 0 moveto (M-345-24680) (includetext)
/ismn /uk.co.terryburton.bwipp findresource exec
Note that ISMN-10 is a legacy format not for use at P.O.S.
The following will generate an obsolete ISMN-10 symbol:
0 0 moveto (M-345-24680-5) (legacy includetext guardwhitespace)
/ismn /uk.co.terryburton.bwipp findresource exec
0 0 moveto (M-345-24680) (legacy includetext guardwhitespace)
/ismn /uk.co.terryburton.bwipp findresource exec
An ISSN barcode is an EAN-13 with prefix 977 used to identify periodicals.
Also known as: International Standard Serial Number.
Standards: ISO 3297, ISO/IEC 15420, BS EN 797, GS1 General Specifications.
A sequence variant is a two-digit number that usually starts at zero and is incremented whenever the recommended retail price is amended, where applicable.
Identical symbols, input provided with and without an ISSN check digit and having sequence number 00:
0 0 moveto (0317-8471 00) (includetext guardwhitespace)
/issn /uk.co.terryburton.bwipp findresource exec
0 0 moveto (0317-847 00) (includetext guardwhitespace)
/issn /uk.co.terryburton.bwipp findresource exec
An ISSN with sequence number 03 and a two-digit add-on representing issue number 17:
0 0 moveto (0317-8471 03 17) (includetext guardwhitespace)
/issn /uk.co.terryburton.bwipp findresource exec
0 0 moveto (0317-847 03 17) (includetext guardwhitespace)
/issn /uk.co.terryburton.bwipp findresource exec
GS1 DataBar Omnidirectional is a fixed-length, linear barcode symbology that can be used to encode a GTIN-14 for use at point of sale.
Also known as: RSS-14
Variants:
Standards: ISO/IEC 24724, ITS Reduced Space Symbology (RSS), AIM ISS - Reduced Space Symbology (RSS), GS1 General Specifications.
(01)...
.Identical symbols, input provided with and without a check digit:
0 0 moveto ((01)24012345678905) ()
/databaromni /uk.co.terryburton.bwipp findresource exec
0 0 moveto ((01)2401234567890) ()
/databaromni /uk.co.terryburton.bwipp findresource exec
GS1 DataBar Stacked Omnidirectional is a fixed-length, stacked linear barcode symbology that can be used to encode a GTIN-14 for use a point of sale.
Also known as: RSS-14 Stacked Omnidirectional.
Variants:
Standards: ISO/IEC 24724, ITS Reduced Space Symbology (RSS), AIM ISS - Reduced Space Symbology (RSS), GS1 General Specifications.
(01)...
.Identical symbols, input provided with and without a check digit:
0 0 moveto ((01)24012345678905) ()
/databarstackedomni /uk.co.terryburton.bwipp findresource exec
0 0 moveto ((01)2401234567890) ()
/databarstackedomni /uk.co.terryburton.bwipp findresource exec
GS1 DataBar Expanded is a variable-length, linear barcode symbology that can be used to encode a GTIN-14 alongside a number of other application identifiers for use at point of sale.
Also known as: RSS Expanded.
Variants:
Standards: ISO/IEC 24724, ITS Reduced Space Symbology (RSS), AIM ISS - Reduced Space Symbology (RSS), GS1 General Specifications.
(01)9...(3103)...
(01)9...(3202)...
(01)9...(3203)...
(01)9...(310x/320x)...(11/13/15/17)...
(01)9...(310x/320x)...
(01)9...(392x)...
(01)9...(393x)...
(01)...
0 0 moveto ((01)95012345678903(3103)000123) ()
/databarexpanded /uk.co.terryburton.bwipp findresource exec
GS1 DataBar Expanded Stacked is a variable-length, stacked-linear barcode symbology that can be used to encode a GTIN-14 alongside a number of other application identifiers for use at point of sale.
Also known as: RSS Expanded Stacked.
Variants:
Standards: ISO/IEC 24724, ITS Reduced Space Symbology (RSS), AIM ISS - Reduced Space Symbology (RSS), GS1 General Specifications.
(01)9...(3103)...
(01)9...(3202)...
(01)9...(3203)...
(01)9...(310x/320x)...(11/13/15/17)...
(01)9...(310x/320x)...
(01)9...(392x)...
(01)9...(393x)...
(01)...
0 0 moveto ((01)95012345678903(3103)000123) (segments=4)
/databarexpandedstacked /uk.co.terryburton.bwipp findresource exec
GS1 DataBar Truncated is a fixed-length, linear barcode symbology that can be used to encode a GTIN-14 for in-house applications.
Also known as: RSS-14 Truncated.
Variants:
Standards: ISO/IEC 24724, ITS Reduced Space Symbology (RSS), AIM ISS - Reduced Space Symbology (RSS), GS1 General Specifications.
(01)...
.Identical symbols, input provided with and without a check digit:
0 0 moveto ((01)24012345678905) ()
/databartruncated /uk.co.terryburton.bwipp findresource exec
0 0 moveto ((01)2401234567890) ()
/databartruncated /uk.co.terryburton.bwipp findresource exec
GS1 DataBar Stacked is a fixed-length, stacked linear barcode symbology that can be used to encode a GTIN-14 for in-house applications.
Also known as: RSS-14 Stacked.
Variants:
Standards: ISO/IEC 24724, ITS Reduced Space Symbology (RSS), AIM ISS - Reduced Space Symbology (RSS), GS1 General Specifications.
(01)...
.Identical symbols, input provided with and without a check digit:
0 0 moveto ((01)24012345678905) ()
/databarstacked /uk.co.terryburton.bwipp findresource exec
0 0 moveto ((01)2401234567890) ()
/databarstacked /uk.co.terryburton.bwipp findresource exec
GS1 DataBar Limited is fixed-length, linear barcode symbology that can be used to encode a GTIN-14 beginning with 0 or 1 for in-house applications.
Also known as: RSS Limited.
Variants:
Standards: ISO/IEC 24724, ITS Reduced Space Symbology (RSS), AIM ISS - Reduced Space Symbology (RSS), GS1 General Specifications.
(01)0...
or (01)1...
.Identical symbols, input provided with and without a check digit:
0 0 moveto ((01)15012345678907) ()
/databarlimited /uk.co.terryburton.bwipp findresource exec
0 0 moveto ((01)1501234567890) ()
/databarlimited /uk.co.terryburton.bwipp findresource exec
GS1 DataMatrix is an implementation of the Data Matrix (ECC 200) barcode symbology with GS1 formatted data.
Standards: ISO/IEC 16022, ANSI/AIM BC11 ISS, GS1 General Specifications.
square
(default) or rectangle
.version=RxC
. Valid options are:
format=square
: 10x10, 12x12, 14x14, 16x16, 18x18, 20x20, 22x22, 24x24, 26x26, 32x32, 36x36, 40x40, 44x44, 48x48, 52x52, 64x64, 72x72, 80x80, 88x88, 96x96, 104x104, 120x120, 132x132, 144x144format=rectangle
: 8x18, 8x32, 12x26, 12x36, 16x36, 16x480 0 moveto ((01)95012345678903(3103)000123) ()
/gs1datamatrix /uk.co.terryburton.bwipp findresource exec
GS1 QR Code is an implementation of the QR Code barcode symbology with GS1 formatted data.
Standards: ISO/IEC 18004, ITS - QR Code, GS1 General Specifications.
eclevel=L
- Loweclevel=M
- Medium (default)eclevel=Q
- Qualityeclevel=H
- High0 0 moveto ((01)03453120000011(8200)http://www.abc.net) ()
/gs1qrcode /uk.co.terryburton.bwipp findresource exec
0 0 moveto
((01)03453120000011(8200)http://abc.net(10)XYZ(410)9501101020917)
()
/gs1qrcode /uk.co.terryburton.bwipp findresource exec
GS1-128 is an implementation of the Code 128 barcode symbology which carries GS1 formatted data, including a GTIN-14.
Also known as: UCC/EAN-128, EAN-128, UCC-128.
Variants:
Standards: ISO/IEC 15417, ANSI/AIM BC4-1999 ISS, BS EN 799, GS1 General Specifications.
GTIN 95012345678903; Weight 0.123kg:
0 0 moveto ((01)95012345678903(3103)000123) (includetext)
/gs1-128 /uk.co.terryburton.bwipp findresource exec
GTIN 0061414199996; Expiration date 1st Jan 2010; Batch 123ABC; Serial 1234567890:
0 0 moveto
((01)0061414199996(17)100101(10)123ABC(21)1234567890)
(includetext)
/gs1-128 /uk.co.terryburton.bwipp findresource exec
EAN-14 is an implementation of the GS1-128 barcode symbology with AI (01) that is typically used to encode a GTIN-14.
Also known as: UCC-14.
Standards: ISO/IEC 15417, ANSI/AIM BC4-1999 ISS, BS EN 799, GS1 General Specifications.
(01)...
.Identical symbols, input provided with and without a check digit:
0 0 moveto ((01)04601234567893) (includetext)
/ean14 /uk.co.terryburton.bwipp findresource exec
0 0 moveto ((01)0460123456789) (includetext)
/ean14 /uk.co.terryburton.bwipp findresource exec
ITF-14 is an implementation of the Interleaved 2 of 5 barcode symbology that is typically used to encode a GTIN-14, GTIN-13 or GTIN-12.
Also known as: UPC Shipping Container Symbol, SCS, UPC Case Code.
Standards: ISO/IEC 16390, ANSI/AIM BC2-1995 USS, BS EN 801, GS1 General Specifications.
Identical symbols, input provided with and without a check digit:
0 0 moveto (04601234567893) (includetext)
/itf14 /uk.co.terryburton.bwipp findresource exec
0 0 moveto (0460123456789) (includetext)
/itf14 /uk.co.terryburton.bwipp findresource exec
SSCC-18 is an implementation of the GS1-128 barcode symbology with AI (00) that is typically used to encode an eighteen-digit shipping container serial number.
Also known as: EAN-18, NVE.
Standards: ISO/IEC 15417, ANSI/AIM BC4-1999 ISS, BS EN 799, GS1 General Specifications.
(00)0...
.Identical symbols, input provided with and without a check digit:
0 0 moveto ((00)006141411234567890) (includetext)
/sscc18 /uk.co.terryburton.bwipp findresource exec
0 0 moveto ((00)00614141123456789) (includetext)
/sscc18 /uk.co.terryburton.bwipp findresource exec
Aztec Code is a 2D matrix-style barcode symbology. It can encode full 256-character extended-ASCII.
Variants:
Standards: ISO/IEC 24778, ANSI/AIM BC13 - ISS Aztec Code.
^NNN
in the data field are replaced with their equivalent ASCII value, useful for specifying unprintable characters.23
.3
.1
and 32
. By default the encoder will create a symbol with be minimal number of layers to encode the given data.format=full
and format=compact
symbol types. By default the encoder will choose the most appropriate format to create a symbol of minimal size.format=rune
. In this case the rune symbol number should be given in the data field.0 0 moveto (This is Aztec Code) ()
/azteccode /uk.co.terryburton.bwipp findresource exec
0 0 moveto
(This is ^065ztec Code)
(parse eclevel=50 ecaddchars=0)
/azteccode /uk.co.terryburton.bwipp findresource exec
0 0 moveto (ABC123) (layers=3 format=full)
/azteccode /uk.co.terryburton.bwipp findresource exec
0 0 moveto (ABC123) (format=compact)
/azteccode /uk.co.terryburton.bwipp findresource exec
0 0 moveto
(00100111001000000101001101111000010100111100101000000110)
(raw)
/azteccode /uk.co.terryburton.bwipp findresource exec
Aztec Runes are a set of small barcode symbols that are used for special applications.
Variants:
Aztec Code is a 2D matrix-style barcode symbology that can encode full 256 character extended-ASCII.
Standards: ISO/IEC 24778, ANSI/AIM BC13 - ISS Aztec Code.
0
to 255
.0 0 moveto (25) ()
/aztecrune /uk.co.terryburton.bwipp findresource exec
The Data Matrix symbology is 2D matrix-style barcode that can encode full 256 character extended-ASCII.
Also known as: Data Matrix ECC 200.
Variants:
Standards: ISO/IEC 16022, ANSI/AIM BC11 - ISS Data Matrix.
^NNN
in the data field are replaced with their equivalent ASCII value. This is useful for specifying unprintable characters.^FNC1
, ^PROG
, ^MAC5
, ^MAC6
.square
(default) or rectangle
.version=RxC
. Valid options are:
format=square
: 10x10, 12x12, 14x14, 16x16, 18x18, 20x20, 22x22, 24x24, 26x26, 32x32, 36x36, 40x40, 44x44, 48x48, 52x52, 64x64, 72x72, 80x80, 88x88, 96x96, 104x104, 120x120, 132x132, 144x144format=rectangle
: 8x18, 8x32, 12x26, 12x36, 16x36, 16x48format=rectangle
and dmre
: 8x18, 8x32, 8x48, 8x64, 12x26, 12x36, 12x64, 16x36, 16x48, 16x64, 24x32, 24x36, 24x48, 24x64, 26x32, 26x40, 26x48, 26x640 0 moveto (This is Data Matrix) ()
/datamatrix /uk.co.terryburton.bwipp findresource exec
0 0 moveto (This is ^068ata Matrix) (parse)
/datamatrix /uk.co.terryburton.bwipp findresource exec
0 0 moveto (Fixed size) (rows=48 columns=48)
/datamatrix /uk.co.terryburton.bwipp findresource exec
0 0 moveto (Rectangular) (format=rectangle version=16x48)
/datamatrix /uk.co.terryburton.bwipp findresource exec
The MicroPDF417 barcode symbology is 2D stacked-linear barcode based on PDF417 that can encode full 256 character extended-ASCII.
Variants:
Standards: ISO/IEC 24728, AIM ISS - MicroPDF417.
^NNN
in the data field are replaced with their equivalent ASCII value, useful for specifying unprintable characters.^NNN
format, suitable for direct low-level encoding.0 0 moveto (MicroPDF417) ()
/micropdf417 /uk.co.terryburton.bwipp findresource exec
0 0 moveto (MicroP^068F417) (parse rows=15 columns=4)
/micropdf417 /uk.co.terryburton.bwipp findresource exec
The PDF417 barcode symbology is 2D stacked-linear barcode that can encode full 256 character extended-ASCII.
Variants:
Standards: ISO/IEC 15438, DD ENV 12925, AIM USS - PDF417.
^NNN
in the data field are replaced with their equivalent ASCII value, useful for specifying unprintable characters.^NNN
format, suitable for direct low-level encoding.0 0 moveto (PDF417) ()
/pdf417 /uk.co.terryburton.bwipp findresource exec
0 0 moveto (P^068F417) (parse columns=2 rows=15)
/pdf417 /uk.co.terryburton.bwipp findresource exec
0 0 moveto (Strong error correction) (columns=2 eclevel=5)
/pdf417 /uk.co.terryburton.bwipp findresource exec
0 0 moveto (^453^178^121^239) (raw columns=2)
/pdf417 /uk.co.terryburton.bwipp findresource exec
Compact PDF417 is a shortened form of the PDF417 barcode that is used in applications where the space for the symbol is restricted.
Also known as: Truncated PDF417
Variants:
Standards: ISO/IEC 15438, DD ENV 12925, AIM USS - PDF417.
^NNN
in the data field are replaced with their equivalent ASCII value, useful for specifying unprintable characters.^NNN
format, suitable for direct low-level encoding.0 0 moveto (A truncated PDF417) (columns=4)
/pdf417compact /uk.co.terryburton.bwipp findresource exec
The QR Code symbology is a 2D matrix-style barcode symbology that can encode full 256 character extended-ASCII.
Also known as: Quick Response Code.
Variants:
Standards: ISO/IEC 18004, JIS X 0510, ITS - QR Code, AIM ISS - QR Code.
^NNN
in the data field are replaced with their equivalent ASCII value, useful for specifying unprintable characters.eclevel=L
- Loweclevel=M
- Medium (default)eclevel=Q
- Qualityeclevel=H
- Highformat=full
and format=micro
(deprecated) symbol types. Alternatively, format=any
will select the optimal symbol format for the given data. By default full format symbols will be generated.0 0 moveto (QR Code) ()
/qrcode /uk.co.terryburton.bwipp findresource exec
0 0 moveto (QR ^067ode) (parse)
/qrcode /uk.co.terryburton.bwipp findresource exec
0 0 moveto (QR CODE 1234) (version=10 eclevel=Q)
/qrcode /uk.co.terryburton.bwipp findresource exec
The Micro QR Code symbology is a smaller variant of QR Code that is used in applications that require a small symbol space.
Also known as: Micro Quick Response Code.
Variants:
Standards: ISO/IEC 18004, JIS X 0510, ITS - QR Code, AIM ISS - QR Code.
^NNN
in the data field are replaced with their equivalent ASCII value, useful for specifying unprintable characters.version=M1
, version=M2
, version=M3
or version=M4
.eclevel=L
- Low (default)eclevel=M
- Medium; Not compatible with M1 symbolseclevel=Q
- Quality; Only compatible with M4 symbols0 0 moveto (01234567) ()
/microqrcode /uk.co.terryburton.bwipp findresource exec
The Han Xin Code symbology is a 2D matrix-style barcode symbology that can encode full 256 character extended-ASCII.
Also known as: Chinese Sensible.
^NNN
in the data field are replaced with their equivalent ASCII value, useful for specifying unprintable characters.eclevel=L1
- Lowesteclevel=L2
eclevel=L3
eclevel=L4
- Highest0 0 moveto (Han Xin Code) (version=10 eclevel=L4)
/hanxin /uk.co.terryburton.bwipp findresource exec
Code 128 is an arbitrarily long, high-density barcode symbology that can be used to encode full 256 character extended-ASCII.
Also known as: USD-6, USS-128, Code 128A, Code 128B, Code 128C.
Variants:
Standards: ISO/IEC 15417, ANSI/AIM BC4 - ISS Code 128, BS EN 799.
^NNN
in the data field are replaced with their equivalent ASCII or extended-ASCII value, useful for specifying unprintable characters, e.g. ^029
for GS, ^209
for Ñ, etc.^FNC1
through ^FNC3
.^LNKA
and ^LNKC
at the end of the symbol indicate that a GS1-128 symbol includes a CC-A/B or CC-C GS1 composite 2D component.^NNN
format, suitable for direct low-level encoding.0 0 moveto (Count0123456789!) (includetext)
/code128 /uk.co.terryburton.bwipp findresource exec
The Code 39 barcode symbology is discrete, variable length and self-checking.
Also known as: Code 3 of 9, LOGMARS, Alpha39, USD-3, USS-39.
Variants:
-
and .
.Standards: ISO/IEC 16388, ANSI/AIM BC1 - USS Code 39, BS EN 800, MIL STD 1189.
-.$/+%*
and space0 0 moveto (CODE39) (includetext)
/code39 /uk.co.terryburton.bwipp findresource exec
0 0 moveto (CODE39) (includecheck includetext includecheckintext)
/code39 /uk.co.terryburton.bwipp findresource exec
0 0 moveto (CODE39) (hidestars includecheck includetext)
/code39 /uk.co.terryburton.bwipp findresource exec
The Code 39 Extended barcode symbology is discrete, variable length and self-checking. It is based on Code 39 but can encode full 128 character ASCII by using shift combinations.
Also known as: Code 39 Full ASCII.
Variants:
Standards: ISO/IEC 16388, ANSI/AIM BC1 - USS Code 39, BS EN 800.
^NNN
in the data field are replaced with their equivalent ASCII value, useful for specifying unprintable characters, e.g. ^029
for GS, etc.0 0 moveto (Code39 Ext!) (includetext includecheck)
/code39ext /uk.co.terryburton.bwipp findresource exec
0 0 moveto (Code39^029Extended) (parse includecheck)
/code39ext /uk.co.terryburton.bwipp findresource exec
Code 93 is a continuous, variable length, self-checking barcode symbology.
Also known as: USD-7, USS-93.
Variants:
Standards: ANSI/AIM BC5 - USS Code 93, ITS 93i.
-.$/+%*
and space^SFT$
, ^SFT%
, ^SFT/
and ^SFT+
.0 0 moveto (CODE93) (includecheck)
/code93 /uk.co.terryburton.bwipp findresource exec
Code 93 including a special shift combination (/)A
representing !:
0 0 moveto (CODE93^SFT/A) (parsefnc includecheck)
/code93 /uk.co.terryburton.bwipp findresource exec
The Code 93 Extended barcode symbology is continuous, variable length and self-checking. It is based on Code 93 but can encode full 128 character ASCII using four additional shift characters: ($) (%) (/) (+)
Also known as: Code 93 Full ASCII.
Variants:
Standards: ANSI/AIM BC5 - USS Code 93, ITS 93i.
^NNN
in the data field are replaced with their equivalent ASCII value, useful for specifying unprintable characters, e.g. ^029
for GS, etc.0 0 moveto (Code93Ext!) (includecheck)
/code93ext /uk.co.terryburton.bwipp findresource exec
0 0 moveto (Code93^029Extended) (parse includecheck)
/code93ext /uk.co.terryburton.bwipp findresource exec
Interleaved 2 of 5 is a high-density numeric barcode symbology.
Also known as: ITF, Code 2 of 5 Interleaved, USD-1, USS-Interleaved 2 of 5.
Variants:
Standards: ISO/IEC 16390, ANSI/AIM BC2 - USS Interleaved 2 of 5, BS EN 801.
0 0 moveto (0123456789) ()
/interleaved2of5 /uk.co.terryburton.bwipp findresource exec
0 0 moveto (2401234567) (includecheck includetext includecheckintext)
/interleaved2of5 /uk.co.terryburton.bwipp findresource exec
The Australia Post 4 State Customer Code is a barcode used by the Australian Postal Service to encode the data on letter mail.
11
, 45
, 59
or 67
.custinfoenc=numeric
if the customer information field is to be encoded using the numeric alphabet which can contain the digits 0-9.custinfoenc=character
, which permits any of the following characters:A-Z
a-z
0-9
space
and #
FCC 62 symbol with character customer data:
0 0 moveto (6279438541AaaB 155) (custinfoenc=character)
/auspost /uk.co.terryburton.bwipp findresource exec
FCC 59 symbol with numeric customer data:
0 0 moveto (593221132401234567) (custinfoenc=numeric)
/auspost /uk.co.terryburton.bwipp findresource exec
Deutsche Post Identcode is an implementation of the Interleaved 2 of 5 barcode symbology that is used by German Post for mail routing.
Also known as: DHL Identcode.
Identical symbols, input provided with an without a check digit:
0 0 moveto (563102430313) (includetext)
/identcode /uk.co.terryburton.bwipp findresource exec
0 0 moveto (56310243031) (includetext)
/identcode /uk.co.terryburton.bwipp findresource exec
The Deutsche Post Leitcode barcode symbology is an implementation of the Interleaved 2 of 5 barcode that is used by German Post for mail routing.
Also known as: DHL Leitcode.
Identical symbols, input provided with and without a check digit:
0 0 moveto (21348075016401) (includetext)
/leitcode /uk.co.terryburton.bwipp findresource exec
0 0 moveto (2134807501640) (includetext)
/leitcode /uk.co.terryburton.bwipp findresource exec
The Japan Post 4 state barcode symbology is used by the Japan Post service to encode the delivery point identifier on letter mail.
A-Z
0-9
-
0 0 moveto (6540123789-A-K-Z) ()
/japanpost /uk.co.terryburton.bwipp findresource exec
The MaxiCode barcode symbology is a 2D barcode based on a hexagonal matrix surrounding a bulls eye pattern. It can encode a structured carrier message and full 256 character extended-ASCII.
Also known as: UPS Code, Code 6.
Standards: ISO/IEC 16023, ANSI/AIM BC10 - ISS MaxiCode.
mode=2
- Formatted data containing a Structured Carrier Message with a numeric (US domestic) postal code.mode=3
- Formatted data containing a Structured Carrier Message with an alphanumeric (international) postal code.mode=4
- Unstructured data using standard error correction.mode=5
- Unstructured data using enhanced error correction.mode=6
- Barcode reader programming.mode=5
if the encoded length of the input data permits enhanced error correction, otherwise it will select mode=4
which provides standard error correction.^NNN
in the data field are replaced with their equivalent ASCII value, useful for specifying unprintable characters.mode=4
, mode=5
or mode=6
the data field may contain any extended ASCII data.mode=2
or mode=3
the data field must begin with a properly structured carrier message, followed by any extended ASCII data.[postal code]^029[country code]^029[service class]^029
. If mode=2
the postcode must be numeric, whilst if mode=3
the postcode may contain up to six digits, upper case letters and spaces.[)>{RS}01{GS}yy
where {RS}
represents ASCII value 30, {GS}
represents ASCII value 29 and yy
is a two-digit year. In parse mode this is represented as [)>^03001^0299
. If mode=2
or mode=3
this must be immediately followed by the structured carrier message.0 0 moveto (This is MaxiCode) ()
/maxicode /uk.co.terryburton.bwipp findresource exec
0 0 moveto (This is Maxi^067ode) (parse)
/maxicode /uk.co.terryburton.bwipp findresource exec
0 0 moveto
(152382802^029840^029001^0291Z00004951^029UPSN^02906X610^029159^0291234567^0291/1^029^029Y^029634 ALPHA DR^029PITTSBURGH^029PA^029^004)
(mode=2 parse)
/maxicode /uk.co.terryburton.bwipp findresource exec
0 0 moveto
(ABC123^029840^029001^0291Z00004951^029UPSN^02906X610^029159^0291234567^0291/1^029^029Y^029634 ALPHA DR^029PITTSBURGH^029PA^029^004)
(mode=3 parse)
/maxicode /uk.co.terryburton.bwipp findresource exec
0 0 moveto
([\)>^03001^02996152382802^029840^029001^0291Z00004951^029UPSN^02906X610^029159^0291234567^0291/1^029^029Y^029634 ALPHA DR^029PITTSBURGH^029PA^029^004)
(mode=2 parse)
/maxicode /uk.co.terryburton.bwipp findresource exec
The Royal Mail 4 State Customer Code is a barcode symbology used by the British Postal Service to encode the postcode and delivery point identifier on letter mail.
Also known as: RM4SCC, CBC.
0 0 moveto (LE28HS9Z) (includetext)
/royalmail /uk.co.terryburton.bwipp findresource exec
The Royal TNT Post 4 state barcode symbology is used by the Dutch Postal Service to encode the delivery point identifier on letter mail.
Also known as: KIX.
A-Z
0-9
0 0 moveto (1231FZ13XHS) (includetext)
/kix /uk.co.terryburton.bwipp findresource exec
The USPS Intelligent Mail barcode is used by the US Postal service to encode the delivery and sender information on letter mail.
Also known as: USPS OneCode.
Standards: USPS-STD-11.
0 0 moveto (0123456709498765432101234567891) (includetext)
/onecode /uk.co.terryburton.bwipp findresource exec
The USPS POSTNET barcode symbology is used by the US Postal service to encode the ZIP code information on letter mail.
0 0 moveto (12345123412) ()
/postnet /uk.co.terryburton.bwipp findresource exec
The USPS PLANET barcode symbology is used by the US Postal service to encode the ZIP code information on letter mail.
0 0 moveto (01234567890) ()
/planet /uk.co.terryburton.bwipp findresource
The USPS FIM encoder is used to generate static predefined barcode symbols.
fima
- US Postal Service FIM-A symbolfimb
- US Postal Service FIM-B symbolfimc
- US Postal Service FIM-C symbolfimd
- US Postal Service FIM-D symbolA USPS FIM A symbol:
0 0 moveto (fima) ()
/symbol /uk.co.terryburton.bwipp findresource exec
A USPS FIM B symbol:
0 0 moveto (fimb) ()
/symbol /uk.co.terryburton.bwipp findresource exec
A USPS FIM C symbol:
0 0 moveto (fimc) ()
/symbol /uk.co.terryburton.bwipp findresource exec
A USPS FIM D symbol:
0 0 moveto (fimd) ()
/symbol /uk.co.terryburton.bwipp findresource exec
Italian Pharmacode is a discrete, fixed length, self-checking barcode symbology used for pharmaceutical products in Italy.
Also known as: Code 32, IMH, Radix 32.
Identical symbols, input provided with and without a check digit:
0 0 moveto (012345676) (includetext)
/code32 /uk.co.terryburton.bwipp findresource exec
0 0 moveto (01234567) (includetext)
/code32 /uk.co.terryburton.bwipp findresource exec
Pharmacode is a binary barcode symbology that is used by the Pharmaceutical industry.
Also known as: Pharmaceutical Binary Code.
Variants:
3
and 131070
inclusive.0 0 moveto (117480) ()
/pharmacode /uk.co.terryburton.bwipp findresource exec
Two-Track Pharmacode is a binary barcode symbology used by the Pharmaceutical industry.
Also known as: Two-track Pharmaceutical Binary Code.
Variants:
4
and 64570080
inclusive.0 0 moveto (117480) ()
/pharmacode2 /uk.co.terryburton.bwipp findresource exec
PZN is a discrete, fixed length, self-checking barcode symbology used for pharmaceutical products in Germany.
Also known as: Pharmazentralnummer.
Variants:
Identical PZN7 symbols, input provided with and without a check digit:
0 0 moveto (1234562) (includetext)
/pzn /uk.co.terryburton.bwipp findresource exec
0 0 moveto (123456) (includetext)
/pzn /uk.co.terryburton.bwipp findresource exec
Identical PZN8 symbols, input provided with and without a check digit:
0 0 moveto (0275808) (pzn8 includetext)
/pzn /uk.co.terryburton.bwipp findresource exec
0 0 moveto (02758089) (pzn8 includetext)
/pzn /uk.co.terryburton.bwipp findresource exec
HIBC barcodes use a number of general symbologies as carrier symbols for data structured according to the LIC and PAS structured data definitions.
Variants:
Standards: ANSI/HIBC Provider Applications Standard, ANSI/HIBC Supplier Labelling Standard, ANSI/HIBC Positive Identification for Patient Safety, ANSI/HIBC Syntax Standard.
0 0 moveto (A123BJC5D6E71) (includetext)
/hibccode39 /uk.co.terryburton.bwipp findresource exec
0 0 moveto (A123BJC5D6E71) (includetext)
/hibccode128 /uk.co.terryburton.bwipp findresource exec
0 0 moveto (A123BJC5D6E71) ()
/hibcpdf417 /uk.co.terryburton.bwipp findresource exec
0 0 moveto (A123BJC5D6E71) ()
/hibcmicropdf417 /uk.co.terryburton.bwipp findresource exec
0 0 moveto (A123BJC5D6E71) ()
/hibcqrcode /uk.co.terryburton.bwipp findresource exec
0 0 moveto (A123BJC5D6E71) ()
/hibcdatamatrix /uk.co.terryburton.bwipp findresource exec
0 0 moveto (A123BJC5D6E71) ()
/hibccodablockf /uk.co.terryburton.bwipp findresource exec
The BC412 barcode symbology is single width, variable length barcode that is used for silicon wafer identification by the semiconductor manufacturing industry.
Also known as: BC412 SEMI, BC412 IBM.
0 0 moveto (BC412) (includecheck)
/bc412 /uk.co.terryburton.bwipp findresource exec
0 0 moveto (BC412) (includestartstop)
/bc412 /uk.co.terryburton.bwipp findresource exec
0 0 moveto (BC412) (semi)
/bc412 /uk.co.terryburton.bwipp findresource exec
Channel Code is a linear, continuous, self-checking, bidirectional barcode symbology that encodes between two and seven digits in a short space.
Standards: ANSI/AIM BC12 - USS Channel Code.
00-26
000-292
0000-3493
00000-44072
000000-576688
0000000-7742862
A channel 3 symbol holding the value five:
0 0 moveto (05) (includetext)
/channelcode /uk.co.terryburton.bwipp findresource exec
A channel 4 symbol holding the value 123:
0 0 moveto (123) (includetext)
/channelcode /uk.co.terryburton.bwipp findresource exec
A channel 4 symbol holding the value five including optional check bars:
0 0 moveto (005) (includetext includecheck)
/channelcode /uk.co.terryburton.bwipp findresource exec
A channel 3 symbol holding the value 26 with a shorteded finder pattern:
0 0 moveto (26) (shortfinder includetext)
/channelcode /uk.co.terryburton.bwipp findresource exec
Codabar is a linear, discrete, self-checking, bidirectional barcode symbology that can encode digits, six symbols and four delimiter characters. It is primarily used by libraries and blood banks, photo labs and FedEx airbills.
Also known as: Rationalized Codabar, Ames Code, NW-7, USD-4, USS-Codabar, ABC Codabar, Monarch, Code 2 of 7.
Standards: ANSI/AIM BC3 - USS Codabar, BS EN 798.
ABCD
TNE*
(with the altstartstop option)-$:/.+
0 0 moveto
(A0123456789B)
(includecheck includetext includecheckintext)
/rationalizedCodabar /uk.co.terryburton.bwipp findresource exec
The Codablock F barcode symbology is 2D stacked-linear barcode that consists of a number of stacked Code 128 symbols. It can encode full 256 character extended-ASCII.
Variants:
Standards: USS Codablock F.
^NNN
in the data field are replaced with their equivalent ASCII value, useful for specifying unprintable characters.^FNC1
or ^FNC3
.^NNN
format, suitable for direct low-level encoding.0 0 moveto (Codablock F) ()
/codablockf /uk.co.terryburton.bwipp findresource exec
0 0 moveto
(CODABLOCK F 34567890123456789010040digit)
(columns=8 rows=5)
/codablockf /uk.co.terryburton.bwipp findresource exec
0 0 moveto
(Short bars, fat seperators)
(columns=10 rows=8 rowheight=6 sepheight=2)
/codablockf /uk.co.terryburton.bwipp findresource exec
Code 11 is a linear, discrete, non-self-checking, bidirectional, numeric barcode symbology that is primarily used for labelling telecommunication equipment.
Also known as: USD-8.
0 0 moveto
(0123456789) (includecheck includetext includecheckintext)
/code11 /uk.co.terryburton.bwipp findresource exec
The Code 16K barcode symbology is 2D stacked-linear barcode that can encode full 256 character extended-ASCII with the use of the FNC4 shift character.
Also known as: USS-16K
Standards: ANSI/AIM BC7 - USS Code 16K, BS EN 12323.
^NNN
in the data field are replaced with their equivalent ASCII value, useful for specifying unprintable characters.^FNC1
through ^FNC3
.mode=0
- Starting code set Amode=1
- Starting code set Bmode=2
- Starting code set Cmode=3
- Starting code set B with implied FNC1mode=4
- Starting code set C with implied FNC1mode=5
- Starting code set C with implied Shift Bmode=6
- Starting code set C with implied Double Shift Bpos=25
specifies this to be the second symbol in a group of five symbols.^NNN
format, suitable for direct low-level encoding.0 0 moveto (Abcd-1234567890-wxyZ) ()
/code16k /uk.co.terryburton.bwipp findresource exec
0 0 moveto (Code 16K) (rows=10)
/code16k /uk.co.terryburton.bwipp findresource exec
0 0 moveto
(Short bars, fat seperators)
(rows=8 rowheight=5 sepheight=2)
/code16k /uk.co.terryburton.bwipp findresource exec
Code 2 of 5 is a simple low density numeric barcode symbology.
Also known as: Code 25, Industrial 2 of 5, Standard 2 of 5
Variants:
version=industrial
(default) - Industrial 2 of 5.version=iata
- Deprecated: Use IATA 2 of 5version=datalogic
- Deprecated: Use Datalogic 2 of 5version=matrix
- Deprecated: Use Matrix 2 of 5version=coop
- Deprecated: Use COOP 2 of 50 0 moveto (01234567) ()
/code2of5 /uk.co.terryburton.bwipp findresource exec
IATA 2 of 5 is a variant of the Code 2 of 5 barcode symbology.
Also known as: Computer Identics 2 of 5.
Variants:
0 0 moveto (01234567) (includetext includecheck includecheckintext)
/iata2of5 /uk.co.terryburton.bwipp findresource exec
Matrix 2 of 5 is a variant of the Code 2 of 5 barcode symbology.
Variants:
Datalogic 2 of 5 is a variant of the Code 2 of 5 barcode symbology.
Variants:
COOP 2 of 5 is a variant of the Code 2 of 5 barcode symbology.
Variants:
The Code 49 barcode symbology is 2D stacked-linear barcode that can encode 128 character ASCII.
Also known as: USS-49.
Standards: ANSI/AIM BC6 - USS Code 49.
^NNN
in the data field are replaced with their equivalent ASCII value, useful for specifying unprintable characters.^FNC1
through ^FNC3
.mode=0
- regular alphanumeric modemode=1
- append modemode=2
- numeric modemode=3
- group alphanumeric modemode=4
- alphanumeric mode starting shift 1mode=5
- alphanumeric mode starting shift 2mode=6
- reservedmode=3
. For example pos=25
specifies this to be the second symbol in a group of five symbols.0 0 moveto (MULTIPLE ROWS IN CODE 49) ()
/code49 /uk.co.terryburton.bwipp findresource exec
0 0 moveto (CODE 49) (rows=8)
/code49 /uk.co.terryburton.bwipp findresource exec
0 0 moveto
(Short bars, fat seperators) (rows=8 rowheight=6 sepheight=2)
/code49 /uk.co.terryburton.bwipp findresource exec
Code One was the earliest public domain 2D matrix-style barcode. It is used by the health care and recycling industry and can encode full 256 character extended-ASCII.
Also known as: Code 1, Code 1S.
Standards: AIM USS - Code One.
^NNN
in the data field are replaced with their equivalent ASCII value, useful for specifying unprintable characters, e.g. ^029
for GS, etc.^FNC1
, ^FNC3
.A
, B
, C
, D
, E
, F
, G
, H
- for standard format symbols (default automatic selection)version=T-16
, version=T-32
, version=T-48
- T-type symbolsversion=S-10
, version=S-20
, version=S-30
- S-type symbols0 0 moveto (Code One) ()
/codeone /uk.co.terryburton.bwipp findresource exec
0 0 moveto (Code One) (version=C)
/codeone /uk.co.terryburton.bwipp findresource exec
0 0 moveto (Code One) (version=T-32)
/codeone /uk.co.terryburton.bwipp findresource exec
0 0 moveto (406990) (version=S-10)
/codeone /uk.co.terryburton.bwipp findresource exec
MSI Plessey is a continuous, non-self-checking, arbitrary length, numeric barcode symbology.
Also known as: MSI, MSI Modified Plessey.
Variants:
checktype=mod10
(default)checktype=mod1010
checktype=mod11
checktype=ncrmod11
checktype=mod1110
checktype=ncrmod1110
checktype=mod11
checksum value of 10 to be encoded with a pair of check digits 10. Normally in checktype=mod11
, any input whose checksum evaluates to 10 is considered invalid having no correct representation.0 0 moveto (0123456789) (includecheck includetext)
/msi /uk.co.terryburton.bwipp findresource exec
0 0 moveto
(0123456789)
(includecheck checktype=mod1110 includetext includecheckintext)
/msi /uk.co.terryburton.bwipp findresource exec
0 0 moveto (0123456785)
(includecheck checktype=mod11 badmod11 includetext includecheckintext)
/msi /uk.co.terryburton.bwipp findresource exec
Plessey is a continuous, arbitrary length barcode symbology for encoding hexadecimal data.
Also known as: Anker Code.
Variants:
0-9
A-F
Equivalent symbols, the latter displaying the two mandatory check characters:
0 0 moveto (01234ABCD) (includetext)
/plessey /uk.co.terryburton.bwipp findresource exec
0 0 moveto (01234ABCD) (includetext includecheckintext)
/plessey /uk.co.terryburton.bwipp findresource exec
A unidirectional symbol:
0 0 moveto (01234ABCD) (unidirectional)
/plessey /uk.co.terryburton.bwipp findresource exec
PosiCode is a continuous, variable length, non-self-checking, bidirectional barcode symbology that is designed for use within printing processes where it is difficult to precisely control the width of a bar.
Standards: ITS PosiCode.
A-Z
, digits 0-9
, symbols -
and .
version=a
(default)version=b
version=limiteda
version=limitedb
^NNN
in the data field are replaced with their equivalent ASCII value, useful for specifying unprintable characters, e.g. ^029
for GS, etc.^FNC1
through ^FNC3
.Equivalent ways to generate a PosiCode A symbol:
0 0 moveto (Abc123) ()
/posicode /uk.co.terryburton.bwipp findresource exec
0 0 moveto (Abc123) (version=a)
/posicode /uk.co.terryburton.bwipp findresource exec
PosiCode A including a GS (ASCII 29) character:
0 0 moveto (AB^029CD) (parse)
/posicode /uk.co.terryburton.bwipp findresource exec
PosiCode A including an FNC2 special character:
0 0 moveto (AB^FNC2CD) (parsefnc)
/posicode /uk.co.terryburton.bwipp findresource exec
PosiCode B symbol with widened bars:
0 0 moveto (Abc123) (version=b inkspread=-1)
/posicode /uk.co.terryburton.bwipp findresource exec
Limited PosiCode A with narrowed bars:
0 0 moveto (ABC-12.3) (version=limiteda)
/posicode /uk.co.terryburton.bwipp findresource exec
Limited PosiCode B:
0 0 moveto (ABC-12.3) (version=limitedb)
/posicode /uk.co.terryburton.bwipp findresource exec
Telepen is an arbitrary length barcode symbology for encoding all 128 ASCII characters without the need for shift characters.
Also known as: Telepen Alpha, Telepen Full ASCII.
Variants:
Standards: USS Telepen.
^NNN
in the data field are replaced with their equivalent ASCII value, useful for specifying unprintable characters.0X
, 1X
, etc. The singular values ^000
to ^016
can also be encoded using the parse option.0 0 moveto (Telepen) (includetext)
/telepen /uk.co.terryburton.bwipp findresource exec
0 0 moveto (Telepen^013) (parse)
/telepen /uk.co.terryburton.bwipp findresource exec
Telepen Numeric is a variant of the Telepen symbology for efficient encoding of numeric data.
Variants:
Standards: USS Telepen.
0X
, 1X
, etc. The singular values ^000
to ^016
can also be encoded using the parse option.^NNN
in the data field are replaced with their equivalent ASCII value, useful for specifying unprintable characters.0 0 moveto (123456) ()
/telepennumeric /uk.co.terryburton.bwipp findresource exec
0 0 moveto (1X345X) ()
/telepennumeric /uk.co.terryburton.bwipp findresource exec
0 0 moveto (1234^005) (parse includetext)
/telepennumeric /uk.co.terryburton.bwipp findresource exec
GS1 Composite barcode symbologies consist of a primary component beneath a 2D component (variations of MicroPDF417 and PDF417) used to encode supplementary GS1 formatted data.
Variants:
Standards: ISO/IEC 24723, ITS EAN.UCC Composite Symbology, AIM ISS - EAN.UCC Composite Symbology, GS1 General Specifications.
|
character.(11)...(10)...
(17)...(10)...
(90){0-3 digits not starting 0}{upper alpha}...
ccversion=a
- CC-Accversion=b
- CC-Bccversion=c
- CC-C (GS1-128 Composite only)0 0 moveto
(331234567890|(99)1234-abcd) (includetext guardwhitespace)
/ean13composite /uk.co.terryburton.bwipp findresource exec
0 0 moveto
(12345670|(21)A12345678) (includetext guardwhitespace)
/ean8composite /uk.co.terryburton.bwipp findresource exec
0 0 moveto
(01600033610|(99)1234-abcd) (includetext)
/upcacomposite /uk.co.terryburton.bwipp findresource exec
0 0 moveto (0121230|(15)021231) (includetext)
/upcecomposite /uk.co.terryburton.bwipp findresource exec
0 0 moveto ((01)03612345678904|(11)990102) ()
/databaromnicomposite
/uk.co.terryburton.bwipp findresource exec
0 0 moveto ((01)03612345678904|(11)990102) ()
/databarstackedomnicomposite
/uk.co.terryburton.bwipp findresource exec
0 0 moveto
((01)93712345678904(3103)001234|(91)1A2B3C4D5E)
()
/databarexpandedcomposite
/uk.co.terryburton.bwipp findresource exec
0 0 moveto
((01)00012345678905(10)ABCDEF|(21)12345678)
(segments=4)
/databarexpandedstackedcomposite
/uk.co.terryburton.bwipp findresource exec
0 0 moveto ((01)03612345678904|(11)990102) ()
/databartruncatedcomposite
/uk.co.terryburton.bwipp findresource exec
0 0 moveto ((01)03412345678900|(17)010200) ()
/databarstackedcomposite
/uk.co.terryburton.bwipp findresource exec
0 0 moveto
((01)03512345678907|(21)abcdefghijklmnopqrstuv)
()
/databarlimitedcomposite
/uk.co.terryburton.bwipp findresource exec
GS1-128 Composite with a CC-A 2D component:
0 0 moveto ((01)03212345678906|(21)A1B2C3D4E5F6G7H8) ()
/gs1-128composite /uk.co.terryburton.bwipp findresource exec
GS1-128 Composite with a CC-C 2D component:
0 0 moveto
((00)030123456789012340|(02)13012345678909(37)24(10)1234567ABCDEFG)
(ccversion=c)
/gs1-128composite /uk.co.terryburton.bwipp findresource exec
Isolated CC-A 2D component:
0 0 moveto ((01)95012345678903) (ccversion=a cccolumns=3)
/gs1-cc /uk.co.terryburton.bwipp findresource exec
Isolated CC-B 2D component:
0 0 moveto
((01)95012345678903(3103)000123) (ccversion=b cccolumns=4)
/gs1-cc /uk.co.terryburton.bwipp findresource exec
Isolated CC-C 2D component:
0 0 moveto
((02)13012345678909(37)24(10)1234567ABCDEFG)
(ccversion=c cccolumns=5)
/gs1-cc /uk.co.terryburton.bwipp findresource exec
DAFT is an encoder for directly specifying the descender, ascender, full-height, tracker-bar succession for a custom 4 state barcode symbol.
D
, A
, F
or T
to denote the descender, ascender, full-height and tracker bars of a custom 4 state symbol.0 0 moveto (FATDAFTDAD) ()
/daft /uk.co.terryburton.bwipp findresource exec
Flattermarken are identification marks used in book production that facilitate the proper arrangement of bound sections by a book binder.
1-9
: a single mark exists in the corresponding module position0
: unmarked sequence of modules0 0 moveto (1304) (inkspread=-1)
/flattermarken /uk.co.terryburton.bwipp findresource exec
The raw encoder is used for directly specifying the space/bar succession of a custom barcode symbol.
0 0 moveto (331132131313411122131311333213114131131221323) (height=0.5)
/raw /uk.co.terryburton.bwipp findresource exec
EAN-2 is the two-digit add-on code that accompanies a EAN or UPC type barcode symbol such as an ISBN or ISSN.
Also known as: Two-Digit Add-On, Two-Digit Supplement, UPC-2
0 0 moveto (05) (includetext guardwhitespace)
/ean2 /uk.co.terryburton.bwipp findresource exec
EAN-5 is the five-digit add-on code that accompanies an EAN or UPC type barcode symbol such as an ISBN or ISSN.
Also known as: Five-Digit Add-On, Five-Digit Supplement, UPC-5
0 0 moveto (90200) (includetext guardwhitespace)
/ean5 /uk.co.terryburton.bwipp findresource exec
Certain barcode symbologies (including GS1-128, GS1 DataBar Omnidirectional, GS1 DataMatrix, GS1 QR Code and GS1 Composite Symbols) represent standardized GS1 data and require that their data field is provided in GS1 Application Identifier standard format, consisting of a concatenated string of AIs along with their corresponding values.
The AIs are a set of approximately one hundred two-, three- or four-digit prefixes written within parentheses that represent physical attributes and business information, e.g.
The following input represents GTIN 0061414199996; Expiration Date 1 January 2010; Batch 123ABC; Serial 1234567890:
(01)0061414199996(17)100101(10)123ABC(21)1234567890
Encoders for barcode symbologies that expect data in GS1 Application Identifier standard format will take care of parsing the input and inserting any necessary FNC1 characters to delimit variable length fields.
The Application Identifier definitions are provided in the GS1 General Specifications. A summary is available here however this may be out of date.
Generate check digit(s) for symbologies where the use of check digits is optional.
Calculate the optional check characters of this Code 93 symbol:
0 0 moveto (CHECK ME OUT) (includecheck)
/code93 /uk.co.terryburton.bwipp findresource exec
Show the calculated check digit in the human readable text.
Display the check digit of this Royal Mail barcode:
0 0 moveto (LE28HS9Z) (includetext includecheckintext)
/royalmail /uk.co.terryburton.bwipp findresource exec
In supporting barcode symbologies, when the parse option is specified, any instances of ^NNN
in the data field are replaced with their equivalent ASCII value, useful for specifying unprintable characters.
Equivalent symbols:
0 0 moveto (This is Data Matrix) ()
/datamatrix /uk.co.terryburton.bwipp findresource exec
0 0 moveto (This is ^068ata Matrix) (parse)
/datamatrix /uk.co.terryburton.bwipp findresource exec
In supporting barcode symbologies, when the parsefnc option is specified, non-data function characters can be specified by escaped combinations such as ^FNC1
, ^FNC4
and ^SFT/
.
Code 93 including a special shift combination (/)A
representing !:
0 0 moveto (TERRY^SFT/A) (parsefnc includecheck)
/code93 /uk.co.terryburton.bwipp findresource exec
Height of longest bar, in inches.
A 1/2 inch tall EAN-13:
0 0 moveto (977147396801) (includetext height=0.5)
/ean13 /uk.co.terryburton.bwipp findresource exec
Stretch the symbol to precisely this width, in inches.
A 2 inch wide Code 93 symbol:
0 0 moveto (TERRY) (width=2)
/code93 /uk.co.terryburton.bwipp findresource exec
Amount by which to reduce the bar widths to compensate for inkspread, in points.
Code 39 for a printer with very runny ink:
0 0 moveto (TEZ) (inkspread=0.6)
/code39 /uk.co.terryburton.bwipp findresource exec
Show human readable text for data in symbol.
Display the text encoded in this Code 39 symbol:
0 0 moveto (SEE ME) (includetext)
/code39 /uk.co.terryburton.bwipp findresource exec
The font name for text.
Customise the human readable text of this USPS POSTNET symbol
0 0 moveto (64501) (includetext textfont=Times textsize=9)
/postnet /uk.co.terryburton.bwipp findresource exec
The font size of the text in points.
Customise the human readable text of this USPS POSTNET symbol
0 0 moveto (64501) (includetext textfont=Times textsize=9)
/postnet /uk.co.terryburton.bwipp findresource exec
The inter-character spacing of the text.
The textxalign option is used to specify where to horizontally position the text.
textxalign=offleft
textxalign=left
textxalign=center
textxalign=right
textxalign=offright
textxalign=justify
The textyalign option is used to specify where to vertically position the text.
textyalign=below
textyalign=center
textyalign=above
The horizontal position of the text in points relative to the default position.
The vertical position of the text in points relative to the default position.
Display a border around the symbol of the specified width with the specified margin gap, in points.
Display a customised border around this Codabar symbol:
0 0 moveto (A3+14-63B) (includetext showborder borderwidth=2 borderbottom=8)
/rationalizedCodabar /uk.co.terryburton.bwipp findresource exec
Color of the respective component, either as a hex RRGGBB
value or a hex CCMMYYKK
value.
Colorized Code 11 symbol using the RGB colour space:
0 0 moveto (0123456789)
(includetext barcolor=AA0000 textcolor=008888 backgroundcolor=FFFF60 showborder bordercolor=0000FF textyoffset=-8)
/code11 /uk.co.terryburton.bwipp findresource exec
Colorized Code 11 symbol using the CMYK colour space:
0 0 moveto (0123456789)
(includetext barcolor=AA000000 textcolor=00888844 backgroundcolor=CCCC6000 showborder bordercolor=00FF0088)
/code11 /uk.co.terryburton.bwipp findresource exec
The font name and size of the add on text in points
Customise the human readable text of this USPS POSTNET symbol
0 0 moveto (64501) (includetext textfont=Times textsize=9)
/postnet /uk.co.terryburton.bwipp findresource exec
Overrides the default positioning algorithm for the add on text.
Display white space guards of the specified width and height, in points.
ISBN-13 with tiny white space guard:
0 0 moveto
(978-1-873671-00)
(includetext guardwhitespace guardwidth=3 guardheight=3)
/isbn /uk.co.terryburton.bwipp findresource exec
Amount of white space to guard to left and right of the symbol and vertical position of the guard symbols, in points.
EAN-8 with very mangled white space guards:
0 0 moveto (01335583)
(includetext guardwhitespace guardleftpos=14 guardrightpos=7 guardleftypos=15 guardrightypos=4)
/ean8 /uk.co.terryburton.bwipp findresource exec
How do I resize symbols without stretching the text?
See this article on resizing symbols.
Scanning ISBNs
When an ISBN symbol is read by a barcode scanner that echos digits to a PC, the data string that is returned is most likely going to be the plain contents of the EAN-13 encoded symbol, i.e. 9781565924796, not 1-56592-479-7. Whether the scanner returns the former string or the latter they nevertheless represent the one same value despite appearing somewhat different.
How do I integrate barcodes into my website or application?
Why not instead help to improve BWIPP and give attribution by referring people to this project's online demonstration.
Remember, BWIPP is essentially a versatile library and is not necessarily a "turn key" solution by itself. https://groups.google.com/d/topic/postscriptbarcode/UOmONFc6cGQ/discussion
If you are a programmer then there are several language bindings that allow you to work with BWIPP without direct knowledge of PostScript. If you are not a programmer then there are a number of frontends that may be useful.
To create a barcode of some required width and height (without stretching the text) perform the following steps, in order.
Starting with this example:
0 0 moveto (977147396801) (includetext)
/ean13 /uk.co.terryburton.bwipp findresource exec
Find the uniform (same x and y) scale factor that makes your output of the required width:
gsave
2 2 scale % <-- Add a line like this
0 0 moveto (977147396801) (includetext)
/ean13 /uk.co.terryburton.bwipp findresource exec
grestore
Add a height option that adjusts the bar height appropriately (taking the scaling into account):
gsave
2 2 scale
% Added height=0.8 option to adjust height
0 0 moveto (977147396801) (includetext height=0.8)
/ean13 /uk.co.terryburton.bwipp findresource exec
grestore
The result should now be of the intended dimensions with properly scaled (not stretched) text.
There are a number of frontends to BWIPP that vary in terms of the functionality that they expose and the way that they express this through their API or GUI, etc.
It would be nice to unify some of these projects but in the meantime this document attempts to provide some guidelines to apply when developing something that places BWIPP in the hands of developers and users.
The author would ideally like any language binding, library or graphical frontend to be representative of the complete functionality of the BWIPP resource and to be maintainable with minimal effort and these guideline help to achieve this goal.
Contact the author of BWIPP whilst you're still experimenting. I will try not to insist on my own way as it's you that will end up supporting your creation so I want you to be happy with it, but it will help everyone if there is some consistency between your code and the next person's.
Author's commitment: If I know about your project then I will make a best efforts commitment to assist with end user support and developer support for any library or application that makes a genuine attempt to adopt the principles given here. Such projects should also feel free to adopt the BWIPP mailing list if they are so inclined and to request access to extend this wiki.
Be aware that we have produced a C library and language-specific bindings with a common API to help with manipulating the BWIPP resources: https://github.com/bwipp/postscriptbarcode/tree/master/libs
You should attempt to use these where possible as it takes most of the pain out of working with the PostScript. If the API doesn't support something that you need then we can extend the interface as necessary.
If you choose to work directly with the PostScript then it is better to parse the inline metadata rather than embedding a load of static data in your code.
You should support new barcode formats automatically by scanning the barcode.ps metadata for BEGIN/END ENCODER
blocks. From these extract descriptions, example data, options, etc. by using the DESC
, EXAM
, EXOP
, ... stanzas within the BEGIN/ENCODER ENCODER
blocks.
Example BWIPP metadata for an encoder:
% --BEGIN ENCODER ean8--
% --REQUIRES preamble raiseerror renlinear ean5 ean2--
% --DESC: EAN-8
% --EXAM: 02345673
% --EXOP: includetext guardwhitespace
% --RNDR: renlinear
... PostScript resource definition here ...
% --END ENCODER ean8--
The best strategy is for libraries and graphical frontends to be light on compiled-in data and can therefore be enhanced by simply replacing the barcode.ps file.
To fully meet this objective may require extending the barcode.ps metadata to describe the individual options that are available for each encoder. The BWIPP author is certainly interested in having such a discussion so please make contact regarding your requirements.
Whether part of your design or as a fall back, allow advanced users to specify the data, options and encoder directly. This will allow them to access BWIPP functionality that you haven't anticipated or chosen to expose via your API or GUI.
Use the BWIPP error reporting mechanism to provide specific error messages to users so that they can understand why a given input is invalid. For example, the following PS procedure can be used to invoke barcode.ps
and on error will halt with the descriptive text of the error (e.g. BWIPP ERROR: EAN-13 must be 12 or 13 digits
) written to STDERR which can be intercepted and thrown or displayed in whatever manner is most appropriate.
%!PS
errordict begin
/handleerror {
$error begin
errorname dup length string cvs 0 6 getinterval (bwipp.) eq {
(%stderr) (w) file
dup (\nBWIPP ERROR: ) writestring
dup errorname dup length string cvs writestring
dup ( ) writestring
dup errorinfo dup length string cvs writestring
dup (\n) writestring
dup flushfile end quit
} if
end //handleerror exec
} bind def
end
% If necessary, set up anything else specific to the environment just here.
% Include the BWIPP resource, either directly or from PS
(barcode.ps) run
% Now make the calls to BWIPP
0 0 moveto (ABC) () /code39 /uk.co.terryburton.bwipp findresource exec
Allow the location of the barcode.ps
file to be configured by the user so that non-admins users can provide a local version and distributions that deprecate bundled libraries can provide a separately packaged version.
In any case, use the following search order to locate the barcode.ps
resource:
[%USER_SPECIFIED_LOCATION%]
~/.[%APP_RC_DIRECTORY%]
(a user's own replacement)[%APP_INSTALL_DIR%]
(a version you have bundled)/usr/share/postscriptbarcode
(Fedora's postscriptbarcode package)/usr/share/libpostscriptbarcode
(Debian's libpostscriptbarcode package)To make the presentation of the list of barcode formats manageable any such list of barcodes should be rendered in the same/similar way as the web-based generator.
Point your users at the online BWIPP symbologies and options references.
The reference is written these in a way that is fairly environment agnostic but if you have any idea or want to improve them then please contribute.
Pass arguments to BWIPP in an injection-proof way that does not allow users to invoke arbitrary PostScript commands by means of un-escaped )
or otherwise.
The best way is to "hexify" the data, options and encoder string data in your output, for example:
0 0 moveto
<3032333435363733> <-- Instead of (02345673)
<696e636c75646574657874> <-- Instead of (includetext)
<65616e38> cvn <-- Instead of /ean8
/uk.co.terryburton.bwipp findresource exec
Example Python:
import binascii, textwrap
def hexify(input):
return textwrap.TextWrapper(subsequent_indent=' ', width=72). \
fill('<' + binascii.hexlify(string) + '>')
Example Perl:
sub hexify {
return '<'.(join "\n ", unpack '(A72)*', unpack 'H*', shift).'>';
}
The following is a list of known references to Barcode Writer in Pure PostScript project and its derivatives.
If you are aware of any noteworthy additions to this list then please inform the BWIPP mailing list.
http://bwipp.terryburton.co.uk
Martínez, Juan J. (2004) "A Barcode Generator in Pure PostScript," http://blackshell.usebox.net/archive/a-barcode-generator-in-pure-postscript.html
Flack, Chapman. (2006) "Direct Use of the PostScript Language," http://www.anastigmatix.net/postscript/direct.html
Janssen, Mark. (2008) "Creating LTO barcodes," Foobar's Blog and Linkdump. http://blog.maniac.nl/2008/05/28/creating-lto-barcodes/
Janssen, Mark. (2009) "Webbased (PDF) LTO Barcode Generator," Foobar's Blog and Linkdump. http://blog.maniac.nl/webbased-pdf-lto-barcode-generator/
Rocholl, Johann C. (2009) "Robust 1D Barcode Recognition on Mobile Devices," http://www.vis.uni-stuttgart.de/uploads/tx_vispublications/thesis.pdf
Scarso, Luigi. (2009) "Una estensione di luatex: luatex lunatic," http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.188.5052&rep=rep1&type=pdf
Pluimers, Jeroen W. (2009) "Generating EAN-13 barcode EPS files for your article numbers," http://wiert.me/2009/11/30/generating-ean-13-barcode-eps-files-for-your-article-numbers/
Russell, Robert. (2010) "Barcodes in SAP with the Barcode Writer in Pure Postscript," http://www.sdn.sap.com/irj/scn/weblogs?blog=/pub/wlg/21446
Seichter, Dominik. (2010) "KBarcode4 Light Released," http://domseichter.blogspot.com/2010/08/kbarcode4-light-released.html
Willis, Nathan. (2010) "Barcode Writer in Pure PostScript," Worldlabel.com Incorporated. http://blog.worldlabel.com/2010/barcode-writer-in-pure-postscript.html
Russell, Robert. (2010) "How to Print(PDF) QR Codes in standard SAP," http://www.rjruss.info/2010/09/how-to-printpdf-qr-codes-in-standard.html
Zhao, Y., Sun, W. (2010) "Practice of Imposition and Illustrator Variable Data Plate Making with Barcode," Proceedings of 17th IAPRI World Conference on Packaging. ISBN 978-1-935068-36-5.
Russell, Robert. (2011) "More Barcodes with Barcode Writer in Pure Postscript," http://www.sdn.sap.com/irj/scn/weblogs?blog=/pub/wlg/22827
McNulty, John. (2011) "The Secret Lives of Objects," Sonic Arts Research Centre. Queen’s University Belfast. http://www.robotmouth.com/papers_files/TSLOO.pdf
Russell, Robert. (2013) "Add FREE barcodes to the SAP Latin2 HP printer Driver," http://www.rjruss.info/2013/02/add-free-barcodes-to-sap-latin2-hp.html
Ehlenbroker J., Lohweg V. (2014) "microIDENT - A System for Simple Coding and Authentication of Documents," Optical Document Security - The Conference on Optical Security and Counterfeit Detection IV.
Russell, Robert. (2014) "Example SAP Smartform with QRcodes using the Barcode Writer in Pure Postscript," http://www.rjruss.info/2014/09/example-sap-smartform-with-qrcodes.html
http://www.terryburton.co.uk/barcodewriter/generator/
Link embedded in the PrintDreams XDR PC-link application for programming the Xyron Design Runner label printer. http://www.printdreams.co.uk/XDR_PC-link_User_Guide.pdf
Jowers, Tim. (2006) "The Business Guide to Free Information Technology including Free/Libre Open Source Software," LuLu Press, p. 197. ISBN 978-1-4303-0101-1.
"Finding the Start of Another Tether," Rupture, Random Artists, January 2007. http://www.randomartists.org/rupture/rupture-jan07-screen.pdf
Tyree, Alan L. (2007) "Self-publishing with LyX," Sage Tutorial Systems Pty Ltd, p. 57. ISBN 0-9803324-2-7.
Misbach, Matt. (2008) "How to self publish the easy and FREE way," http://www.uvpafug.org/presentations/Howtoselfpublish_2008_Syllabus.pdf
"Designing Books (with InDesign®)," papergeko: Handbuilt Websites & Artists' Books. http://papergecko.co.uk/new/wp-content/uploads/2008/12/bookdesigncourse_day4.pdf
Nagy, Andras M. (2009) "The Public Domain Publishing Bible," Murine Communications, p. 143. ISBN 978-0-9824994-1-2.
Winter, Mick. (2010) "Scan Me. Everybody's Guide to the Magical World of QR Codes," Westsong Publishing, p. 110. ISBN 978-0-9659000-3-4.
Zamberletti A., Gallo I., Carullo M., Binaghi E. (2010) "Neural Image Restoration For Decoding 1-D Barcodes Using Common Camera Phones," http://eprints.pascal-network.org/archive/00007576/01/2010visapp_angers.pdf
Zamberletti A., Gallo I., Carullo M., Binaghi E. (2011) "Decoding 1-D Barcode from Degraded Images Using a Neural Network," Computer Vision, Imaging and Computer Graphics: Theory and Applications, VISIGRAPP 2010, Springer, pp. 45-55.
Hranilovic, S. (2012) "Advanced Optical Wireless Communication Systems: MIMO Techniques for Indoor Optical Wireless Communications," Cambridge University Press, p. 130. ISBN 978-0-521-19787-8.
Koamtac. (2013) "Creating Special Bar Codes To Configure Your KDC," Revision 1.0. http://www.koamtac.com/documents/manuals/How_To_Create_KOAMTAC_Special_BarCodes.pdf
Thompson, S. (2016) "Q&A: Retail Worlds: Retail Systems chats to Mark Denton, head of retail propositions, BT Expedite," Retail Systems, Perspective Publishing Ltd. http://www.retail-systems.com/rs/RW_Mark_Denton_BT_Expedite.php
http://www.ctan.org/tex-archive/graphics/pstricks/contrib/pst-barcode/
Goossens, M., Mittelbach F., Rahtz, S., Roegel, D. (2007) "The LaTeX Graphics Companion," Addison Wesley. ISBN 978-0-321-50892-8.
Robbers, Yuri & Skjold, Annemarie. (2007) "Creating Book Covers using PSTricks," The PracTex Journal, Number 1.
Thompson, Paul A. (2008) "Clinical trials management on the internet - II. Using LATEX, PostScript, and SAS to produce barcode label sheets," The PracTeX Journal, Number 3.
Secondo, Stefano. (2009) "Cover Letter With Style - Part Six," http://stefano.italians.nl/archives/65
Voß, Herbert. (2010) "The current state of the PSTricks project," The TUGboat Journal, Volume 31i, Number 1. p. 36.
Brampton, Andrew. (2010) "LaTeX QR Based Business Card," The Website of Andrew Brampton. http://bramp.net/blog/latex-qr-based-business-card
Pascal. (2011) "QR Code with Latex," http://xaphire.de/recipes/?p=344
Voß, Herbert. (2011) "Ch 26: pst-barcode - Bar codes" in "PSTricks. Graphics and PostScript for TeX and LaTeX," Cambridge: UIT Cambridge. pp. 497-508.
https://github.com/metafloor/bwip-js
Russell, Robert. (2015) "Barcodes in SAP with the Barcode Writer in Pure Postscript Updated and Also Available in JavaScript," http://www.rjruss.info/2015/04/barcodes-in-sap-with-barcode-writer-in.html
http://documentation.scribus.net/index.php/Barcode_Generator
"Libre Graphics: Scribus. Open Source Desktop Publishing Turns Pro," Linux Format, Issue 80 (June 2006). Future Publishing. p. 54.
Willis, Nathan. (2010) "Generating Barcodes with KBarcode," Worldlabel.com Incorporated. http://blog.worldlabel.com/2010/generating-barcodes-with-kbarcode.html