Monolithic Flavours
===================

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`.


Inclusion Within the Prolog Section of a Document
-------------------------------------------------

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.


Installing to a Printer Initial Job VM
--------------------------------------

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.

