\QRcode

Class to create QR-code arrays for TCPDF class.

QR Code symbol is a 2D barcode that can be scanned by handy terminals such as a mobile phone with CCD. The capacity of QR Code is up to 7000 digits or 4000 characters, and has high robustness. This class supports QR Code model 2, described in JIS (Japanese Industrial Standards) X0510:2004 or ISO/IEC 18004. Currently the following features are not supported: ECI and FNC1 mode, Micro QR Code, QR Code model 1, Structured mode.

This class is derived from "PHP QR Code encoder" by Dominik Dzienia (http://phpqrcode.sourceforge.net/) based on "libqrencode C library 3.1.1." by Kentaro Fukuchi (http://megaui.net/fukuchi/works/qrencode/index.en.html), contains Reed-Solomon code written by Phil Karn, KA9Q. QR Code is registered trademark of DENSO WAVE INCORPORATED (http://www.denso-wave.com/qrcode/index-e.html). Please read comments on this class source file for full copyright and license information.

Summary

Methods
Properties
Constants
__construct()
getBarcodeArray()
No public properties found
No constants found
binarize()
encodeString()
encodeMask()
setFrameAt()
getFrameAt()
getNextPosition()
init()
getCode()
writeFormatInformation()
mask0()
mask1()
mask2()
mask3()
mask4()
mask5()
mask6()
mask7()
generateMaskNo()
makeMaskNo()
makeMask()
calcN1N3()
evaluateSymbol()
mask()
isdigitat()
isalnumat()
identifyMode()
eatNum()
eatAn()
eatKanji()
eat8()
splitString()
toUpper()
newInputItem()
encodeModeNum()
encodeModeAn()
encodeMode8()
encodeModeKanji()
encodeModeStructure()
encodeBitStream()
appendNewInputItem()
insertStructuredAppendHeader()
calcParity()
checkModeNum()
estimateBitsModeNum()
lookAnTable()
checkModeAn()
estimateBitsModeAn()
estimateBitsMode8()
estimateBitsModeKanji()
checkModeKanji()
check()
estimateBitStreamSize()
estimateVersion()
lengthOfCode()
createBitStream()
convertData()
appendPaddingBit()
mergeBitStream()
getBitStream()
getByteStream()
allocate()
newFromNum()
newFromBytes()
appendBitstream()
appendNum()
appendBytes()
bitstreamToByte()
qrstrset()
getDataLength()
getECCLength()
getWidth()
getRemainder()
getMinimumVersion()
lengthIndicator()
maximumWords()
getEccSpec()
putAlignmentMarker()
putAlignmentPattern()
getVersionPattern()
getFormatInfo()
putFinderPattern()
createFrame()
newFrame()
rsBlockNum()
rsBlockNum1()
rsDataCodes1()
rsEccCodes1()
rsBlockNum2()
rsDataCodes2()
rsEccCodes2()
rsDataLength()
rsEccLength()
init_rs()
modnn()
init_rs_char()
encode_rs_char()
$barcode_array
$version
$level
$hint
$casesensitive
$structured
$data
$width
$frame
$x
$y
$dir
$bit
$datacode
$ecccode
$blocks
$rsblocks
$count
$dataLength
$eccLength
$b1
$runLength
$dataStr
$items
$rsitems
$frames
$anTable
$capacity
$lengthTableBits
$eccTable
$alignmentPattern
$versionPattern
$formatInfo
N/A
No private methods found
No private properties found
N/A

Properties

$barcode_array

$barcode_array : \barcode

Type

\barcode — array to be returned which is readable by TCPDF

$version

$version : \QR

Type

\QR — code version. Size of QRcode is defined as version. Version is from 1 to 40. Version 1 is 21*21 matrix. And 4 modules increases whenever 1 version increases. So version 40 is 177*177 matrix.

$level

$level : \Levels

Type

\Levels — of error correction. See definitions for possible values.

$hint

$hint : \Encoding

Type

\Encoding — mode

$casesensitive

$casesensitive : \if

Type

\if — true the input string will be converted to uppercase

$structured

$structured : \structured

Type

\structured — QR code (not supported yet)

$data

$data : \mask

Type

\mask — data

$width

$width : \width

Type

\width

$frame

$frame : \frame

Type

\frame

$x

$x : \X

Type

\X — position of bit

$y

$y : \Y

Type

\Y — position of bit

$dir

$dir : \direction

Type

\direction

$bit

$bit : \single

Type

\single — bit

$datacode

$datacode : \data

Type

\data — code

$ecccode

$ecccode : \error

Type

\error — correction code

$blocks

$blocks : \blocks

Type

\blocks

$rsblocks

$rsblocks : \Reed-Solomon

Type

\Reed-Solomon — blocks

$count

$count : \counter

Type

\counter

$dataLength

$dataLength : \data

Type

\data — length

$eccLength

$eccLength : \error

Type

\error — correction length

$b1

$b1 : \b1

Type

\b1

$runLength

$runLength : \run

Type

\run — length

$dataStr

$dataStr : \input

Type

\input — data string

$items

$items : \input

Type

\input — items

$rsitems

$rsitems : \Reed-Solomon

Type

\Reed-Solomon — items

$frames

$frames : array

Type

array — of frames

$anTable

$anTable : \alphabet-numeric

Type

\alphabet-numeric — convesion table

$capacity

$capacity : array

Type

array — Table of the capacity of symbols See Table 1 (pp.13) and Table 12-16 (pp.30-36), JIS X0510:2004.

$lengthTableBits

$lengthTableBits : array

Type

array — Length indicator

$eccTable

$eccTable : array

Type

array — Table of the error correction code (Reed-Solomon block) See Table 12-16 (pp.30-36), JIS X0510:2004.

$alignmentPattern

$alignmentPattern : array

Type

array — Positions of alignment patterns. This array includes only the second and the third position of the alignment patterns. Rest of them can be calculated from the distance between them. See Table 1 in Appendix E (pp.71) of JIS X0510:2004.

$versionPattern

$versionPattern : array

Type

array — Version information pattern (BCH coded). See Table 1 in Appendix D (pp.68) of JIS X0510:2004. size: [QRSPEC_VERSION_MAX - 6]

$formatInfo

$formatInfo : array

Type

array — Format information

Methods

__construct()

__construct(string  $code, string  $eclevel = 'L') 

This is the class constructor.

Creates a QRcode object

Parameters

string $code

code to represent using QRcode

string $eclevel

error level:

  • L : About 7% or less errors can be corrected.
  • M : About 15% or less errors can be corrected.
  • Q : About 25% or less errors can be corrected.
  • H : About 30% or less errors can be corrected.

getBarcodeArray()

getBarcodeArray() : array

Returns a barcode array which is readable by TCPDF

Returns

array —

barcode array readable by TCPDF;

binarize()

binarize(array  $frame) : array

Convert the frame in binary form

Parameters

array $frame

array to binarize

Returns

array —

frame in binary form

encodeString()

encodeString(string  $string) 

Encode the input string to QR code

Parameters

string $string

input string to encode

encodeMask()

encodeMask(integer  $mask) 

Encode mask

Parameters

integer $mask

masking mode

setFrameAt()

setFrameAt(array  $at, integer  $val) 

Set frame value at specified position

Parameters

array $at

x,y position

integer $val

value of the character to set

getFrameAt()

getFrameAt(array  $at) : \value

Get frame value at specified position

Parameters

array $at

x,y position

Returns

\value —

at specified position

getNextPosition()

getNextPosition() : array

Return the next frame position

Returns

array —

of x,y coordinates

init()

init(array  $spec) : 

Initialize code.

Parameters

array $spec

array of ECC specification

Returns

in case of success, -1 in case of error

getCode()

getCode() : array

Return Reed-Solomon block code.

Returns

array —

rsblocks

writeFormatInformation()

writeFormatInformation(integer  $width, array  $frame, array  $mask, integer  $level) : integer

Write Format Information on frame and returns the number of black bits

Parameters

integer $width

frame width

array $frame

frame

array $mask

masking mode

integer $level

error correction level

Returns

integer —

blacks

mask0()

mask0(integer  $x, integer  $y) : integer

mask0

Parameters

integer $x

X position

integer $y

Y position

Returns

integer —

mask

mask1()

mask1(integer  $x, integer  $y) : integer

mask1

Parameters

integer $x

X position

integer $y

Y position

Returns

integer —

mask

mask2()

mask2(integer  $x, integer  $y) : integer

mask2

Parameters

integer $x

X position

integer $y

Y position

Returns

integer —

mask

mask3()

mask3(integer  $x, integer  $y) : integer

mask3

Parameters

integer $x

X position

integer $y

Y position

Returns

integer —

mask

mask4()

mask4(integer  $x, integer  $y) : integer

mask4

Parameters

integer $x

X position

integer $y

Y position

Returns

integer —

mask

mask5()

mask5(integer  $x, integer  $y) : integer

mask5

Parameters

integer $x

X position

integer $y

Y position

Returns

integer —

mask

mask6()

mask6(integer  $x, integer  $y) : integer

mask6

Parameters

integer $x

X position

integer $y

Y position

Returns

integer —

mask

mask7()

mask7(integer  $x, integer  $y) : integer

mask7

Parameters

integer $x

X position

integer $y

Y position

Returns

integer —

mask

generateMaskNo()

generateMaskNo(integer  $maskNo, integer  $width, array  $frame) : array

Return bitmask

Parameters

integer $maskNo

mask number

integer $width

width

array $frame

frame

Returns

array —

bitmask

makeMaskNo()

makeMaskNo(integer  $maskNo, integer  $width, integer  $s, integer  $d, boolean  $maskGenOnly = false) : integer

makeMaskNo

Parameters

integer $maskNo
integer $width
integer $s
integer $d
boolean $maskGenOnly

Returns

integer —

b

makeMask()

makeMask(integer  $width, array  $frame, integer  $maskNo, integer  $level) : array

makeMask

Parameters

integer $width
array $frame
integer $maskNo
integer $level

Returns

array —

mask

calcN1N3()

calcN1N3(integer  $length) : integer

calcN1N3

Parameters

integer $length

Returns

integer —

demerit

evaluateSymbol()

evaluateSymbol(integer  $width, array  $frame) : integer

evaluateSymbol

Parameters

integer $width
array $frame

Returns

integer —

demerit

mask()

mask(integer  $width, array  $frame, integer  $level) : array

mask

Parameters

integer $width
array $frame
integer $level

Returns

array —

best mask

isdigitat()

isdigitat(string  $str, integer  $pos) : boolean

Return true if the character at specified position is a number

Parameters

string $str

string

integer $pos

characted position

Returns

boolean —

true of false

isalnumat()

isalnumat(string  $str, integer  $pos) : boolean

Return true if the character at specified position is an alphanumeric character

Parameters

string $str

string

integer $pos

characted position

Returns

boolean —

true of false

identifyMode()

identifyMode(integer  $pos) : integer

identifyMode

Parameters

integer $pos

Returns

integer —

mode

eatNum()

eatNum() : integer

eatNum

Returns

integer —

run

eatAn()

eatAn() : integer

eatAn

Returns

integer —

run

eatKanji()

eatKanji() : integer

eatKanji

Returns

integer —

run

eat8()

eat8() : integer

eat8

Returns

integer —

run

splitString()

splitString() 

splitString

toUpper()

toUpper() 

toUpper

newInputItem()

newInputItem(integer  $mode, integer  $size, array  $data, array  $bstream = null) : array

newInputItem

Parameters

integer $mode
integer $size
array $data
array $bstream

Returns

array —

input item

encodeModeNum()

encodeModeNum(array  $inputitem, integer  $version) : array

encodeModeNum

Parameters

array $inputitem
integer $version

Returns

array —

input item

encodeModeAn()

encodeModeAn(array  $inputitem, integer  $version) : array

encodeModeAn

Parameters

array $inputitem
integer $version

Returns

array —

input item

encodeMode8()

encodeMode8(array  $inputitem, integer  $version) : array

encodeMode8

Parameters

array $inputitem
integer $version

Returns

array —

input item

encodeModeKanji()

encodeModeKanji(array  $inputitem, integer  $version) : array

encodeModeKanji

Parameters

array $inputitem
integer $version

Returns

array —

input item

encodeModeStructure()

encodeModeStructure(array  $inputitem) : array

encodeModeStructure

Parameters

array $inputitem

Returns

array —

input item

encodeBitStream()

encodeBitStream(array  $inputitem, integer  $version) : array

encodeBitStream

Parameters

array $inputitem
integer $version

Returns

array —

input item

appendNewInputItem()

appendNewInputItem(  $items, integer  $mode, integer  $size, array  $data) : \items

Append data to an input object.

The data is copied and appended to the input object.

Parameters

$items
integer $mode

encoding mode.

integer $size

size of data (byte).

array $data

array of input data.

Returns

\items

insertStructuredAppendHeader()

insertStructuredAppendHeader(array  $items, integer  $size, integer  $index, integer  $parity) : array

insertStructuredAppendHeader

Parameters

array $items
integer $size
integer $index
integer $parity

Returns

array —

items

calcParity()

calcParity(array  $items) : integer

calcParity

Parameters

array $items

Returns

integer —

parity

checkModeNum()

checkModeNum(integer  $size, array  $data) : boolean

checkModeNum

Parameters

integer $size
array $data

Returns

boolean —

true or false

estimateBitsModeNum()

estimateBitsModeNum(integer  $size) : integer

estimateBitsModeNum

Parameters

integer $size

Returns

integer —

number of bits

lookAnTable()

lookAnTable(integer  $c) : \value

Look up the alphabet-numeric convesion table (see JIS X0510:2004, pp.19).

Parameters

integer $c

character value

Returns

\value

checkModeAn()

checkModeAn(integer  $size, array  $data) : boolean

checkModeAn

Parameters

integer $size
array $data

Returns

boolean —

true or false

estimateBitsModeAn()

estimateBitsModeAn(integer  $size) : integer

estimateBitsModeAn

Parameters

integer $size

Returns

integer —

number of bits

estimateBitsMode8()

estimateBitsMode8(integer  $size) : integer

estimateBitsMode8

Parameters

integer $size

Returns

integer —

number of bits

estimateBitsModeKanji()

estimateBitsModeKanji(integer  $size) : integer

estimateBitsModeKanji

Parameters

integer $size

Returns

integer —

number of bits

checkModeKanji()

checkModeKanji(integer  $size, array  $data) : boolean

checkModeKanji

Parameters

integer $size
array $data

Returns

boolean —

true or false

check()

check(integer  $mode, integer  $size,   $data) : boolean

Validate the input data.

Parameters

integer $mode

encoding mode.

integer $size

size of data (byte).

$data

Returns

boolean —

true in case of valid data, false otherwise

estimateBitStreamSize()

estimateBitStreamSize(array  $items, integer  $version) : integer

estimateBitStreamSize

Parameters

array $items
integer $version

Returns

integer —

bits

estimateVersion()

estimateVersion(array  $items) : integer

estimateVersion

Parameters

array $items

Returns

integer —

version

lengthOfCode()

lengthOfCode(integer  $mode, integer  $version, integer  $bits) : integer

lengthOfCode

Parameters

integer $mode
integer $version
integer $bits

Returns

integer —

size

createBitStream()

createBitStream(array  $items) : array

createBitStream

Parameters

array $items

Returns

array —

of items and total bits

convertData()

convertData(array  $items) : array

convertData

Parameters

array $items

Returns

array —

items

appendPaddingBit()

appendPaddingBit(array  $bstream) : array

Append Padding Bit to bitstream

Parameters

array $bstream

Returns

array —

bitstream

mergeBitStream()

mergeBitStream(  $items) : array

mergeBitStream

Parameters

$items

Returns

array —

bitstream

getBitStream()

getBitStream(integer  $items) : array

Returns a stream of bits.

Parameters

integer $items

Returns

array —

padded merged byte stream

getByteStream()

getByteStream(integer  $items) : array

Pack all bit streams padding bits into a byte array.

Parameters

integer $items

Returns

array —

padded merged byte stream

allocate()

allocate(integer  $setLength) : array

Return an array with zeros

Parameters

integer $setLength

array size

Returns

array

newFromNum()

newFromNum(integer  $bits, integer  $num) : array

Return new bitstream from number

Parameters

integer $bits

number of bits

integer $num

number

Returns

array —

bitstream

newFromBytes()

newFromBytes(integer  $size, array  $data) : array

Return new bitstream from bytes

Parameters

integer $size

size

array $data

bytes

Returns

array —

bitstream

appendBitstream()

appendBitstream(array  $bitstream, array  $append) : array

Append one bitstream to another

Parameters

array $bitstream

original bitstream

array $append

bitstream to append

Returns

array —

bitstream

appendNum()

appendNum(array  $bitstream, integer  $bits, integer  $num) : array

Append one bitstream created from number to another

Parameters

array $bitstream

original bitstream

integer $bits

number of bits

integer $num

number

Returns

array —

bitstream

appendBytes()

appendBytes(array  $bitstream, integer  $size, array  $data) : array

Append one bitstream created from bytes to another

Parameters

array $bitstream

original bitstream

integer $size

size

array $data

bytes

Returns

array —

bitstream

bitstreamToByte()

bitstreamToByte(  $bstream) : array

Convert bitstream to bytes

Parameters

$bstream

Returns

array —

of bytes

qrstrset()

qrstrset(array  $srctab, integer  $x, integer  $y, string  $repl, integer  $replLen = false) : array

Replace a value on the array at the specified position

Parameters

array $srctab
integer $x

X position

integer $y

Y position

string $repl

value to replace

integer $replLen

length of the repl string

Returns

array —

srctab

getDataLength()

getDataLength(integer  $version, integer  $level) : integer

Return maximum data code length (bytes) for the version.

Parameters

integer $version

version

integer $level

error correction level

Returns

integer —

maximum size (bytes)

getECCLength()

getECCLength(integer  $version, integer  $level) : integer

Return maximum error correction code length (bytes) for the version.

Parameters

integer $version

version

integer $level

error correction level

Returns

integer —

ECC size (bytes)

getWidth()

getWidth(integer  $version) : integer

Return the width of the symbol for the version.

Parameters

integer $version

version

Returns

integer —

width

getRemainder()

getRemainder(integer  $version) : integer

Return the numer of remainder bits.

Parameters

integer $version

version

Returns

integer —

number of remainder bits

getMinimumVersion()

getMinimumVersion(integer  $size, integer  $level) : integer

Return a version number that satisfies the input code length.

Parameters

integer $size

input code length (byte)

integer $level

error correction level

Returns

integer —

version number

lengthIndicator()

lengthIndicator(integer  $mode, integer  $version) : integer

Return the size of length indicator for the mode and version.

Parameters

integer $mode

encoding mode

integer $version

version

Returns

integer —

the size of the appropriate length indicator (bits).

maximumWords()

maximumWords(integer  $mode, integer  $version) : integer

Return the maximum length for the mode and version.

Parameters

integer $mode

encoding mode

integer $version

version

Returns

integer —

the maximum length (bytes)

getEccSpec()

getEccSpec(integer  $version, integer  $level, array  $spec) : array

Return an array of ECC specification.

Parameters

integer $version

version

integer $level

error correction level

array $spec

an array of ECC specification contains as following: {# of type1 blocks, # of data code, # of ecc code, # of type2 blocks, # of data code}

Returns

array —

spec

putAlignmentMarker()

putAlignmentMarker(array  $frame, integer  $ox, integer  $oy) : array

Put an alignment marker.

Parameters

array $frame

frame

integer $ox

X center coordinate of the pattern

integer $oy

Y center coordinate of the pattern

Returns

array —

frame

putAlignmentPattern()

putAlignmentPattern(integer  $version,   $frame, integer  $width) : array

Put an alignment pattern.

Parameters

integer $version

version

$frame
integer $width

width

Returns

array —

frame

getVersionPattern()

getVersionPattern(integer  $version) : \BCH

Return BCH encoded version information pattern that is used for the symbol of version 7 or greater. Use lower 18 bits.

Parameters

integer $version

version

Returns

\BCH —

encoded version information pattern

getFormatInfo()

getFormatInfo(array  $mask, integer  $level) : \BCH

Return BCH encoded format information pattern.

Parameters

array $mask
integer $level

error correction level

Returns

\BCH —

encoded format information pattern

putFinderPattern()

putFinderPattern(array  $frame, integer  $ox, integer  $oy) : array

Put a finder pattern.

Parameters

array $frame

frame

integer $ox

X center coordinate of the pattern

integer $oy

Y center coordinate of the pattern

Returns

array —

frame

createFrame()

createFrame(integer  $version) : Array

Return a copy of initialized frame.

Parameters

integer $version

version

Returns

Array —

of unsigned char.

newFrame()

newFrame(integer  $version) : Array

Set new frame for the specified version.

Parameters

integer $version

version

Returns

Array —

of unsigned char.

rsBlockNum()

rsBlockNum(array  $spec) : integer

Return block number 0

Parameters

array $spec

Returns

integer —

value

rsBlockNum1()

rsBlockNum1(array  $spec) : integer

Return block number 1

Parameters

array $spec

Returns

integer —

value

rsDataCodes1()

rsDataCodes1(array  $spec) : integer

Return data codes 1

Parameters

array $spec

Returns

integer —

value

rsEccCodes1()

rsEccCodes1(array  $spec) : integer

Return ecc codes 1

Parameters

array $spec

Returns

integer —

value

rsBlockNum2()

rsBlockNum2(array  $spec) : integer

Return block number 2

Parameters

array $spec

Returns

integer —

value

rsDataCodes2()

rsDataCodes2(array  $spec) : integer

Return data codes 2

Parameters

array $spec

Returns

integer —

value

rsEccCodes2()

rsEccCodes2(array  $spec) : integer

Return ecc codes 2

Parameters

array $spec

Returns

integer —

value

rsDataLength()

rsDataLength(array  $spec) : integer

Return data length

Parameters

array $spec

Returns

integer —

value

rsEccLength()

rsEccLength(array  $spec) : integer

Return ecc length

Parameters

array $spec

Returns

integer —

value

init_rs()

init_rs(integer  $symsize, integer  $gfpoly, integer  $fcr, integer  $prim, integer  $nroots, integer  $pad) : array

Initialize a Reed-Solomon codec and add it to existing rsitems

Parameters

integer $symsize

symbol size, bits

integer $gfpoly

Field generator polynomial coefficients

integer $fcr

first root of RS code generator polynomial, index form

integer $prim

primitive element to generate polynomial roots

integer $nroots

RS code generator polynomial degree (number of roots)

integer $pad

padding bytes at front of shortened block

Returns

array —

Array of RS values:

  • mm = Bits per symbol;
  • nn = Symbols per block;
  • alpha_to = log lookup table array;
  • index_of = Antilog lookup table array;
  • genpoly = Generator polynomial array;
  • nroots = Number of generator;
  • roots = number of parity symbols;
  • fcr = First consecutive root, index form;
  • prim = Primitive element, index form;
  • iprim = prim-th root of 1, index form;
  • pad = Padding bytes in shortened block;
  • gfpoly
.

modnn()

modnn(  $rs, integer  $x) : integer

modnn

Parameters

$rs
integer $x

X position

Returns

integer —

X osition

init_rs_char()

init_rs_char(integer  $symsize, integer  $gfpoly, integer  $fcr, integer  $prim, integer  $nroots, integer  $pad) : array

Initialize a Reed-Solomon codec and returns an array of values.

Parameters

integer $symsize

symbol size, bits

integer $gfpoly

Field generator polynomial coefficients

integer $fcr

first root of RS code generator polynomial, index form

integer $prim

primitive element to generate polynomial roots

integer $nroots

RS code generator polynomial degree (number of roots)

integer $pad

padding bytes at front of shortened block

Returns

array —

Array of RS values:

  • mm = Bits per symbol;
  • nn = Symbols per block;
  • alpha_to = log lookup table array;
  • index_of = Antilog lookup table array;
  • genpoly = Generator polynomial array;
  • nroots = Number of generator;
  • roots = number of parity symbols;
  • fcr = First consecutive root, index form;
  • prim = Primitive element, index form;
  • iprim = prim-th root of 1, index form;
  • pad = Padding bytes in shortened block;
  • gfpoly
.

encode_rs_char()

encode_rs_char(array  $rs, array  $data, array  $parity) : \parity

Encode a Reed-Solomon codec and returns the parity array

Parameters

array $rs

RS values

array $data

data

array $parity

parity

Returns

\parity —

array