# barcode.php

### Generate barcodes from a single PHP file. MIT license.

Use from a PHP script:

    include 'barcode.php';

    $generator = new barcode_generator();

    /* Output directly to standard output. */
    $generator->output_image($format, $symbology, $data, $options);

    /* Create bitmap image. */
    $image = $generator->render_image($symbology, $data, $options);
    imagepng($image);
    imagedestroy($image);

    /* Generate SVG markup. */
    $svg = $generator->render_svg($symbology, $data, $options);
    echo $svg;

Use with GET or POST:

    barcode.php?f=format&s=symbology&d=data&options

e.g.

    barcode.php?f=png&s=upc-e&d=06543217
    barcode.php?f=svg&s=qr&d=HELLO%20WORLD&sf=8&ms=r&md=0.8

#### Options:

`f` | Format. One of:
`png` `gif` `jpeg` `svg`
`s` | Symbology (type of barcode). One of:
`upc-a` `upc-e` `ean-8` `ean-13` `ean-13-pad` `ean-13-nopad` `ean-128` | `code-39` `code-39-ascii` `code-93` `code-93-ascii` `code-128` `codabar` `itf` | `qr` `qr-l` `qr-m` `qr-q` `qr-h` | `dmtx` `dmtx-s` `dmtx-r` `gs1-dmtx` `gs1-dmtx-s` `gs1-dmtx-r`
`d` | Data. For UPC or EAN, use `*` for missing digit. For Codabar, use `ABCD` or `ENT*` for start and stop characters. For QR, encode in Shift-JIS for kanji mode.
`w` | Width of image. Overrides `sf` or `sx`.
`h` | Height of image. Overrides `sf` or `sy`.
`sf` | Scale factor. Default is 1 for linear barcodes or 4 for matrix barcodes.
`sx` | Horizontal scale factor. Overrides `sf`.
`sy` | Vertical scale factor. Overrides `sf`.
`p` | Padding. Default is 10 for linear barcodes or 0 for matrix barcodes.
`pv` | Top and bottom padding. Default is value of `p`.
`ph` | Left and right padding. Default is value of `p`.
`pt` | Top padding. Default is value of `pv`.
`pl` | Left padding. Default is value of `ph`.
`pr` | Right padding. Default is value of `ph`.
`pb` | Bottom padding. Default is value of `pv`.
`bc` | Background color in `#RRGGBB` format.
`cs` | Color of spaces in `#RRGGBB` format.
`cm` | Color of modules in `#RRGGBB` format.
`tc` | Text color in `#RRGGBB` format. Applies to linear barcodes only.
`tf` | Text font for SVG output. Default is `monospace`. Applies to linear barcodes only.
`ts` | Text size. For SVG output, this is in points and the default is 10. For PNG, GIF, or JPEG output, this is the GD library built-in font number from 1 to 5 and the default is 1. Applies to linear barcodes only.
`th` | Distance from text baseline to bottom of modules. Default is 10. Applies to linear barcodes only.
`ms` | Module shape. One of: `s` for square, `r` for round, or `x` for X-shaped. Default is `s`. Applies to matrix barcodes only.
`md` | Module density. A number between 0 and 1. Default is 1. Applies to matrix barcodes only.
`wq` | Width of quiet area units. Default is 1. Use 0 to suppress quiet area.
`wm` | Width of narrow modules and spaces. Default is 1.
`ww` | Width of wide modules and spaces. Applies to Code 39, Codabar, and ITF only. Default is 3.
`wn` | Width of narrow space between characters. Applies to Code 39 and Codabar only. Default is 1.