Components All New MacOS Windows Linux iOS
Examples Mac & Win Server Client Guides Statistic FMM Blog Deprecated Old

Barcode.Generate

Generates a barcode.

Component Version macOS Windows Linux Server iOS SDK
Barcode 3.5 ✅ Yes ✅ Yes ✅ Yes ✅ Yes ✅ Yes
MBS( "Barcode.Generate"; symbology; Text { ; width; height; rotation; scale; Transparent; ShowText; Encoding } )   More

Parameters

Parameter Description Example Flags
symbology The symbology to use. e.g. EANX for EAN-13.
Another possibility is to lookup the symbology code in the zint manual and pass the number here. EANX is 13 for example.
"EANX"
Text The text to encode in the barcode. "12345"
width The desired width of the barcode in pixels.
Zero gives the auto size.
0 Optional
height The desired height of the barcode in pixels.
Zero gives the auto size.
0 Optional
rotation The rotation. Can be 0, 90, 180 or 270. 0 Optional
scale The scale of the target image.
Please use at least 4 for printing the barcode.
1.0 Optional
Transparent 0: black on white
1: black on transparent background
2: white on black (new in 7.2)
3: white on transparent background (new in 7.2)
1 Optional
ShowText Whether to show text. Use 0 to hide text or 1 to show text. 1 Optional
Encoding The text encoding for text parameter.
Default is UTF-8.
Possible encoding names: ANSI, ISO-8859-1, Latin1, Mac, Native, UTF-8, DOS, Hex, Base64 or Windows. More listed in the FAQ.
UTF8 Optional

Result

Returns GMImage reference or error.

Description

Generates a barcode.
The plugin uses zint library internally, so we include the zint manual in documentation.

Possible symbologies: CODE11, C25MATRIX, C25INTER, C25IATA, C25LOGIC, C25IND, CODE39, EXCODE39, EAN8, EANX, EAN128, CODABAR, CODE128, DPLEIT, DPIDENT, CODE16K, CODE49, CODE93, FLAT, RSS14, RSSLTD, RSSEXP, TELEPEN, UPCA, UPCE, POSTNET, MSIPLESSEY, FIM, LOGMARS, PHARMA, PZN, PHARMA_TWO, PDF417, PDF417TRUNC, MAXICODE, QRCODE, CODE128B, AUSPOST, AUSREPLY, AUSROUTE, AUSREDIRECT, ISBNX, RM4SCC, DATAMATRIX, EAN14, CODABLOCKF, NVE18, JAPANPOST, KOREAPOST, RSS14STACK, RSS14STACKOMNI, RSSEXPSTACK, PLANET, MICROPDF417, ONECODE, PLESSEY, TELEPEN_NUM, ITF14, KIX, AZTEC, DAFT, MICROQR, HIBC128, HIBC39, HIBCDM, HIBCQR, HIBCPDF, HIBCMICPDF, HIBCBLOCKF, HIBCAZTEC, AZRUNE, CODE32, EANXCC, EAN128CC, RSS14CC, RSSLTDCC, RSSEXPCC, UPCACC, UPCECC, RSS14STACKCC, RSS14OMNICC, RSSEXPSTACKCC, CHANNEL, CODEONE, GRIDMATRIX, EANXCHK, UPCACHK, UPCECHK, DOTCODE, HANXIN, VIN, MAILMARK, UPNQR and ULTRA..

Please use EANX for EAN-2, EAN-5, EAN-8 and EAN-13. You may need to leave away the check digit for some barcodes. EAN-13 can be created with 12 or 13 digits, but for EAN-8, only pas 7 digits.
This function returns an image reference for our GMImage functions. There you can either work on the image or simply store it in a container. On the end please free the image with GMImage.Release function.
For the size, be aware that some types like UPC codes have fixed size depending on content.

See also Barcode.SetOptions for further options.

For MicroQR barcodes, you can use ECC Level 1 to 3, where 1 is default.
Length is limited to only 35 characters minus space for ECC.

You can use GMImage.SetDepth to customize the bit depth of the returned image before saving. Version 11.0 and further will default to 8 bit here, while 9.0 to 10.5 use 16 bit.

CodeNameNumeric ValueDescription
CODE111Code 11
C25STANDARD2Standard Code 2 of 5 (Matrix)
C25MATRIX2Legacy
C25INTER32 of 5 Interleaved
C25IATA42 of 5 IATA
C25LOGIC62 of 5 Data Logic
C25IND72 of 5 Industrial
CODE398Code 3 of 9 (Code 39)
EXCODE399Extended Code 3 of 9 (Code 39+)
EANX 13EAN (European Article Number)
EANX_CHK 14EAN + Check Digit
GS1_12816GS1-128 (UCC.EAN-128)
EAN12816Code 128 (automatic subset switching)
CODABAR 18Codabar
CODE12820Code 128
DPLEIT 21Deutsche Post Leitcode
DPIDENT 22Deutsche Post Identcode
CODE16K23Code 16k
CODE4924Code 49
CODE9325Code 93
FLAT 28Flattermarken
DBAR_OMN 29GS1 DataBar Omnidirectional
RSS1429GS1 DataBar-14
DBAR_LTD 30GS1 DataBar Limited
RSS_LTD 30GS1 DataBar Limited
DBAR_EXP 31GS1 DataBar Expanded
RSS_EXP 31Legacy
TELEPEN 32Telepen Alpha
UPCA 34UPC-A
UPCA_CHK 35UPC-A + Check Digit
UPCE 37UPC-E
UPCE_CHK 38UPC-E + Check Digit
POSTNET 40USPS (U.S. Postal Service) POSTNET
MSI_PLESSEY 47MSI Plessey
FIM 49Facing Identification Mark
LOGMARS 50LOGMARS
PHARMA 51Pharmacode One-Track
PZN 52Pharmazentralnummer
PHARMA_TWO 53Pharmacode Two-Track
CEPNET 54Brazilian CEPNet Postal Code
PDF41755PDF417
PDF417COMP56Compact PDF417 (Truncated PDF417)
PDF417TRUNC56PDF417 Truncated
MAXICODE 57MaxiCode
QRCODE 58QR Code
CODE128B60Code 128 (Subset B)
AUSPOST 63Australia Post Standard Customer
AUSREPLY 66Australia Post Reply Paid
AUSROUTE 67Australia Post Routing
AUSREDIRECT 68Australia Post Redirection
ISBNX 69ISBN (EAN-13 with verification stage)
RM4SCC70Royal Mail 4-State Customer Code (RM4SCC)
DATAMATRIX 71Data Matrix (ECC200)
EAN1472EAN-14
VIN 73Vehicle Identification Number
CODABLOCKF 74Codablock-F
NVE1875NVE-18 (SSCC-18)
JAPANPOST 76Japanese Postal Code
KOREAPOST 77Korea Post
DBAR_STK 79GS1 DataBar Stacked
RSS14STACK79GS1 DataBar-14 Stacked
DBAR_OMNSTK 80GS1 DataBar Stacked Omnidirectional
RSS14STACK_OMNI80GS1 DataBar-14 Stacked Omnidirectional
DBAR_EXPSTK 81GS1 DataBar Expanded Stacked
RSS_EXPSTACK 81GS1 DataBar Expanded Stacked
PLANET 82USPS PLANET
MICROPDF41784MicroPDF417
USPS_IMAIL 85USPS Intelligent Mail (OneCode)
ONECODE 85USPS OneCode
PLESSEY 86UK Plessey
TELEPEN_NUM 87Telepen Numeric
ITF1489ITF-14
KIX 90Dutch Post KIX Code
AZTEC 92Aztec Code
DAFT 93DAFT Code
DPD 96DPD Code
MICROQR 97Micro QR Code
HIBC_12898HIBC (Health Industry Barcode) Code 128
HIBC_3999HIBC Code 39
HIBC_DM 102HIBC Data Matrix
HIBC_QR 104HIBC QR Code
HIBC_PDF 106HIBC PDF417
HIBC_MICPDF 108HIBC MicroPDF417
HIBC_BLOCKF 110HIBC Codablock-F
HIBC_AZTEC 112HIBC Aztec Code
DOTCODE 115DotCode
HANXIN 116Han Xin (Chinese Sensible) Code
MAILMARK 121Royal Mail 4-State Mailmark
AZRUNE 128Aztec Runes
CODE32129Code 32
EANX_CC 130Composite Symbol with EAN linear component
GS1_128_CC131GS1-128 Composite
EAN128_CC131Composite Symbol with GS1-128 linear component
DBAR_OMN_CC 132GS1 DataBar Omnidirectional Composite
RSS14_CC132Composite Symbol with GS1 DataBar-14 linear component
DBAR_LTD_CC 133GS1 DataBar Limited Composite
RSS_LTD_CC 133Composite Symbol with GS1 DataBar Limited component
DBAR_EXP_CC 134GS1 DataBar Expanded Composite
RSS_EXP_CC 134Composite Symbol with GS1 DataBar Extended component
UPCA_CC 135Composite Symbol with UPC A linear component
UPCE_CC 136Composite Symbol with UPC E linear component
DBAR_STK_CC 137GS1 DataBar Stacked Composite
RSS14STACK_CC137Composite Symbol with GS1 DataBar-14 Stacked component
DBAR_OMNSTK_CC 138GS1 DataBar Stacked Omnidirectional Composite
RSS14_OMNI_CC138Composite Symbol with GS1 DataBar-14 Stacked Omnidirectional component
DBAR_EXPSTK_CC 139GS1 DataBar Expanded Stacked Composite
RSS_EXPSTACK_CC139Composite Symbol with GS1 DataBar Expanded Stacked component
CHANNEL 140Channel Code
CODEONE 141Code One
GRIDMATRIX 142Grid Matrix
UPNQR 143UPNQR (Univerzalnega Plačilnega Naloga QR)
ULTRA 144Ultracode
RMQR 145Rectangular Micro QR Code (rMQR)
BC412146IBM BC412 (SEMI T1-95)

Examples

Creates UPCA barcode:

MBS( "Barcode.Generate"; "UPCA"; "72527270270")

Create ISDN 9780271016368 barcode with EAN:

MBS( "Barcode.Generate"; "EANX"; "978027101636")

Make a barcode and store it as PNG in a container:

Set Variable [$image; Value:MBS( "Barcode.Generate"; "UPCA"; "72527270270")]
If [MBS("isError") = 0]
    Set Field [MyTable::BarCodeContainer; MBS( "GMImage.WriteToPNGContainer"; $image; "barcode.png" )]
    Set Variable [$r; Value:MBS("GMImage.Release"; $image)]
Else
    Set Field [MyTable::BarCodeContainer; ""]
End If

Generate EAN 128

MBS( "Barcode.Generate"; "EAN128"; "[00]993262210000005384")

Generate UPCA barcode:

Set Variable [ $Barcode ; Value: MBS( "Barcode.Generate"; "UPCA"; "76837100000"; 0; 0; 0; 1; 1; 1; "UTF8" ) ] 
If [ MBS( "IsError" ) = 0 ] 
    Set Field [ test::Barcode ; MBS("GMImage.WriteToPNGContainer"; $Barcode; "768371000004.png") ] 
    Set Variable [ $r ; Value: MBS("GMImage.Release"; $Barcode) ] 
Else
    Set Field [ test::Barcode ; "" ] 
End If

Create a barcode and change color to red:

Set Field [Barcode Generation::Image; ""]
Set Variable [$img; Value:MBS("Barcode.Generate"; Barcode Generation::Symbology; Barcode Generation::Text)]
If [GetAsNumber($img) > 0]
    Set Variable [$r; Value:MBS("GMImage.SetType"; $img; 7)]
    Set Variable [$r; Value:MBS( "GMImage.ReplaceColor"; $img; "black"; "red"; 3)]
    Set Field [Barcode Generation::Image; MBS( "GMImage.WriteToPNGContainer"; $img; "barcode.png")]
    Set Variable [$r; Value:MBS( "GMImage.Release"; $img )]
End If

Create a data matrix barcode with size 10 and return as container:

Let ( [
// set options for Size 10 (32x32) square for data matrix
r = MBS("Barcode.SetOptions"; 0; 10; 100);
// create a data matrix barcode
p = MBS("Barcode.Generate"; "DATAMATRIX"; "12818670,3,1" ; 0; 0; 0; 4);
// success?
e1 = MBS("IsError");
// save as PNG
image = MBS( "GMImage.WriteToPNGContainer"; p; "barcode.png" );
// success?
e2 = MBS("IsError");
// free image from memory
r = MBS("GMImage.Release"; p)
// return container if no error
]; If(e1 = 0 and e2 = 0; image; "") )

Generate Maxicode with mode=4:

Set Field [Barcode Generation::Image; ""]
Set Variable [$img; Value:MBS("Barcode.SetOptions"; 4)]
Set Variable [$img; Value:MBS("Barcode.Generate"; "MAXICODE"; "A MaxiCode Message in Mode 4")]
If [MBS("IsError") = 0]
    Set Field [Barcode Generation::Image; MBS( "GMImage.WriteToPNGContainer"; $img; "barcode.png")]
    Set Variable [$r; Value:MBS( "GMImage.Release"; $img )]
End If

Example for Maxicode creation, e.g. for UPS:

Set Variable [ $p ; Value: "LS97TF   826004" // primary text ]
Set Variable [ $t ; Value: "[)>{RS}01{GS}961Z42015596{GS}UPSN{GS}123W45{GS}339{GS}{GS}1/1{GS}1{GS}N{GS}{GS}LEEDS{GS}{RS}{EOT}" ]
Set Variable [ $t ; Value: Substitute($t; "{EOT}"; Char(4)) ]
Set Variable [ $t ; Value: Substitute($t; "{RS}"; Char(30)) ]
Set Variable [ $t ; Value: Substitute($t; "{GS}"; Char(29)) ]
Set Variable [ $r ; Value: MBS("Barcode.SetOptions"; 3) ]
// Set Variable [ $r ; Value: MBS( "Barcode.SetInputMode"; "data" ) ]
Set Variable [ $r ; Value: MBS( "Barcode.SetInputMode"; "unicode" ) ]
Set Variable [ $r ; Value: MBS("Barcode.SetPrimary"; $p) ]
Set Variable [ $img ; Value: MBS("Barcode.Generate"; "maxicode"; $t) ]
Set Field [ Barcode Generation::Image ; MBS( "GMImage.WriteToPNGContainer"; $img ) ]
Set Variable [ $r ; Value: MBS("GMImage.Release"; $img) ]

Create barcode and crop it:

Set Field [ Barcode Generation::Image ; "" ]
Set Variable [ $img ; Value: MBS("Barcode.Generate"; Barcode Generation::Symbology; Barcode Generation::Text) ]
If [ MBS("IsError") = 0 ]
    Set Variable [ $ImageHeight ; Value: MBS("GMImage.GetHeight"; $img) ]
    Set Variable [ $ImageWidth ; Value: MBS("GMImage.GetWidth"; $img) ]
    # calculate the crop rectangle
    Set Variable [ $w ; Value: $ImageWidth ]
    Set Variable [ $h ; Value: $ImageHeight ]
    Set Variable [ $x ; Value: 0 ]
    Set Variable [ $y ; Value: $ImageHeight - 50 ]
    # crop
    Set Variable [ $r ; Value: MBS("GMImage.Crop"; $img; $w & "x" & $h & "+" & $x & "+" & $y) ]
    Set Field [ Barcode Generation::Image ; MBS( "GMImage.WriteToPNGContainer"; $img; "barcode.png") ]
    Set Variable [ $r ; Value: MBS( "GMImage.Release"; $img ) ]
End If

Create barcode and cut away top half to get wider EAN codes:

Set Field [ Barcode Generation::Image ; "" ]
Set Variable [ $img ; Value: MBS( "Barcode.Generate"; /* Generates a barcode. */ Barcode Generation::Symbology; /* The symbology to use. e.g. EANX for EAN-13. Another possibility is to lookup the symbology code in the zint manual and pass the number here. EANX is 13 for example.e.g.… ]
If [ MBS("IsError") = 0 ]
    # crop to top half
    Set Variable [ $h ; Value: MBS("GMImage.GetHeight"; $img) ]
    Set Variable [ $w ; Value: MBS("GMImage.GetWidth"; $img) ]
    Set Variable [ $r ; Value: MBS("GMImage.Crop"; $img; $w & "x" & ($h/2) & "+0+" & ($h/2)) ]
    Set Field [ Barcode Generation::Image ; MBS( "GMImage.WriteToPNGContainer"; $img; "barcode.png") ]
    Set Variable [ $r ; Value: MBS( "GMImage.Release"; $img ) ]
End If

Create Code39 barcode in Let statement:

Let ( [
// create a Code39 barcode
p = MBS("Barcode.Generate"; "CODE39"; $Stock ; 160 ; 25 ; 0 ; 2 ; 1 ; 0);
// success?
e1 = MBS("IsError");
// save as PNG
image = MBS( "GMImage.WriteToPNGContainer"; p; "barcode.png" );
// success?
e2 = MBS("IsError");
// free image from memory
r = MBS("GMImage.Release"; p)
// return container if no error
]; If(e1 = 0 and e2 = 0; image; "") )

Create a CMYK picture for barcode:

Set Variable [ $img ; Value: MBS( "Barcode.Generate"; /* Generates a barcode. */
Barcode Generation::Symbology; /* The symbology to use. e.g. EANX for EAN-13.
Another possibility is to lookup the symbology code in the zint manual and pass the number here. EANX is 13 for example.e.g. "EANX" */
Barcode Generation::Text; /* The text to encode in the barcode.e.g. "12345" */
0; /* Optional; The desired width of the barcode in pixels. Zero gives the auto size.e.g. 0 */
0; /* Optional; The desired height of the barcode in pixels. Zero gives the auto size.e.g. 0 */
0; /* Optional; The rotation. Can be 0, 90, 180 or 270.e.g. 0 */
4; /* Optional; The scale of the target image.e.g. 1.0 */
0; /* Optional; 0: black on white */
1; /* Optional; Whether to show text. Use 0 to hide text or 1 to show text.e.g. 1 */
"UTF-8") /* Optional; The text encoding for text parameter.
Default is UTF-8.e.g. UTF8 */]
If [ MBS("IsError") = 0 ]
    Set Variable [ $r ; Value: MBS( "GMImage.SetColorSpace"; $img; 10 ) ]
    Set Variable [ $r ; Value: MBS( "GMImage.ReplaceColor"; $img; "RGB 1 1 1 1"; "RGB 0 0 0 1"; 10) ]
    Set Variable [ $r ; Value: MBS( "GMImage.SetQuality"; $img; 100 ) ]
    Set Field [ Barcode Generation::Image ; MBS( "GMImage.WriteToJPEGContainer"; $img; "barcode.jpg") ]
    Set Variable [ $r ; Value: MBS( "GMImage.Release"; $img ) ]
End If

Generate code for US Postal Office (USPS):

MBS( "Barcode.Generate"; "OneCode"; "01234567094987654321-012345678")

See also

Release notes

  • Version 13.1
  • Version 13.0
  • Version 12.5
  • Version 11.2
    • Added workaround for error 561 in Barcode.Generate. We lower ECC level now if text doesn't fit otherwise.
  • Version 11.0
    • Changed Barcode.Generate to default to 8-bit per channel for the generated image to avoid trouble if receiving software can't handle 16 bit per channel. You can still change with GMImage.SetDepth, e.g. to make a monochrome version.
  • Version 9.4
  • Version 7.4
  • Version 7.2

Example Databases

Blog Entries

This function checks for a license.

Created 18th August 2014, last changed 2nd May 2024


Barcode.EANChecksum - Barcode.GenerateJSON