Skip to content

Instantly share code, notes, and snippets.

@andrewodri
Last active December 1, 2021 21:25
Show Gist options
  • Save andrewodri/894cc2e9c34e30a95ba33add6355b1cf to your computer and use it in GitHub Desktop.
Save andrewodri/894cc2e9c34e30a95ba33add6355b1cf to your computer and use it in GitHub Desktop.
Code 128 generator for Acrobat PDF actions
var barcode = this.getField("CarrierCode").valueAsString + this.getField("CargoControlNumber").valueAsString
var specification = "code128a"
var fontMapping = "common"
var fromMap = {
"common": {
" ": 0,
"Â": 0, "!": 1, "\"": 2, "#": 3, "$": 4, "%": 5, "&": 6, "'": 7,
"(": 8, ")": 9, "*": 10, "+": 11, ",": 12, "-": 13, ".": 14, "/": 15,
"0": 16, "1": 17, "2": 18, "3": 19, "4": 20, "5": 21, "6": 22, "7": 23,
"8": 24, "9": 25, ":": 26, ";": 27, "<": 28, "=": 29, ">": 30, "?": 31,
"@": 32, "A": 33, "B": 34, "C": 35, "D": 36, "E": 37, "F": 38, "G": 39,
"H": 40, "I": 41, "J": 42, "K": 43, "L": 44, "M": 45, "N": 46, "O": 47,
"P": 48, "Q": 49, "R": 50, "S": 51, "T": 52, "U": 53, "V": 54, "W": 55,
"X": 56, "Y": 57, "Z": 58, "[": 59, "\\": 60, "]": 61, "^": 62, "_": 63,
"`": 64, "a": 65, "b": 66, "c": 67, "d": 68, "e": 69, "f": 70, "g": 71,
"h": 72, "i": 73, "j": 74, "k": 75, "l": 76, "m": 77, "n": 78, "o": 79,
"p": 80, "q": 81, "r": 82, "s": 83, "t": 84, "u": 85, "v": 86, "w": 87,
"x": 88, "y": 89, "z": 90, "{": 91, "|": 92, "}": 93, "~": 94, "Ã": 95,
"Ä": 96, "Å": 97, "Æ": 98, "Ç": 99, "È": 100, "É": 101, "Ê": 102, "Ë": 103,
"Ì": 104, "Í": 105, "—": 106
},
"uncommon": {
"Ô": 0, "!": 1, "\"": 2, "#": 3, "$": 4, "%": 5, "&": 6, "'": 7,
"(": 8, ")": 9, "*": 10, "+": 11, ",": 12, "-": 13, ".": 14, "/": 15,
"0": 16, "1": 17, "2": 18, "3": 19, "4": 20, "5": 21, "6": 22, "7": 23,
"8": 24, "9": 25, ":": 26, ";": 27, "<": 28, "=": 29, ">": 30, "?": 31,
"@": 32, "A": 33, "B": 34, "C": 35, "D": 36, "E": 37, "F": 38, "G": 39,
"H": 40, "I": 41, "J": 42, "K": 43, "L": 44, "M": 45, "N": 46, "O": 47,
"P": 48, "Q": 49, "R": 50, "S": 51, "T": 52, "U": 53, "V": 54, "W": 55,
"X": 56, "Y": 57, "Z": 58, "[": 59, "\\": 60, "]": 61, "^": 62, "_": 63,
"`": 64, "a": 65, "b": 66, "c": 67, "d": 68, "e": 69, "f": 70, "g": 71,
"h": 72, "i": 73, "j": 74, "k": 75, "l": 76, "m": 77, "n": 78, "o": 79,
"p": 80, "q": 81, "r": 82, "s": 83, "t": 84, "u": 85, "v": 86, "w": 87,
"x": 88, "y": 89, "z": 90, "{": 91, "|": 92, "}": 93, "~": 94, "È": 95,
"É": 96, "Ê": 97, "Ë": 98, "Ì": 99, "Í": 100, "Î": 101, "Ï": 102, "Ð": 103,
"Ñ": 104, "Ò": 105, "—": 106
},
"barcodesoft": {
"ü": 0, "!": 1, "\"": 2, "#": 3, "$": 4, "%": 5, "&": 6, "'": 7,
"(": 8, ")": 9, "*": 10, "+": 11, ",": 12, "-": 13, ".": 14, "/": 15,
"0": 16, "1": 17, "2": 18, "3": 19, "4": 20, "5": 21, "6": 22, "7": 23,
"8": 24, "9": 25, ":": 26, ";": 27, "<": 28, "=": 29, ">": 30, "?": 31,
"@": 32, "A": 33, "B": 34, "C": 35, "D": 36, "E": 37, "F": 38, "G": 39,
"H": 40, "I": 41, "J": 42, "K": 43, "L": 44, "M": 45, "N": 46, "O": 47,
"P": 48, "Q": 49, "R": 50, "S": 51, "T": 52, "U": 53, "V": 54, "W": 55,
"X": 56, "Y": 57, "Z": 58, "[": 59, "\\": 60, "]": 61, "^": 62, "_": 63,
"`": 64, "a": 65, "b": 66, "c": 67, "d": 68, "e": 69, "f": 70, "g": 71,
"h": 72, "i": 73, "j": 74, "k": 75, "l": 76, "m": 77, "n": 78, "o": 79,
"p": 80, "q": 81, "r": 82, "s": 83, "t": 84, "u": 85, "v": 86, "w": 87,
"x": 88, "y": 89, "z": 90, "{": 91, "|": 92, "}": 93, "~": 94, "ð": 95,
"ñ": 96, "ò": 97, "ó": 98, "ô": 99, "õ": 100, "ö": 101, "÷": 102, "ø": 103,
"ù": 104, "ú": 105, "—": 106
}
}
var toMap ={
"common": {
0: " ", 1: "!", 2: "\"", 3: "#", 4: "$", 5: "%", 6: "&", 7: "'",
8: "(", 9: ")", 10: "*", 11: "+", 12: ",", 13: "-", 14: ".", 15: "/",
16: "0", 17: "1", 18: "2", 19: "3", 20: "4", 21: "5", 22: "6", 23: "7",
24: "8", 25: "9", 26: ":", 27: ";", 28: "<", 29: "=", 30: ">", 31: "?",
32: "@", 33: "A", 34: "B", 35: "C", 36: "D", 37: "E", 38: "F", 39: "G",
40: "H", 41: "I", 42: "J", 43: "K", 44: "L", 45: "M", 46: "N", 47: "O",
48: "P", 49: "Q", 50: "R", 51: "S", 52: "T", 53: "U", 54: "V", 55: "W",
56: "X", 57: "Y", 58: "Z", 59: "[", 60: "\\", 61: "]", 62: "^", 63: "_",
64: "`", 65: "a", 66: "b", 67: "c", 68: "d", 69: "e", 70: "f", 71: "g",
72: "h", 73: "i", 74: "j", 75: "k", 76: "l", 77: "m", 78: "n", 79: "o",
80: "p", 81: "q", 82: "r", 83: "s", 84: "t", 85: "u", 86: "v", 87: "w",
88: "x", 89: "y", 90: "z", 91: "{", 92: "|", 93: "}", 94: "~", 95: "Ã",
96: "Ä", 97: "Å", 98: "Æ", 99: "Ç", 100: "È", 101: "É", 102: "Ê", 103: "Ë",
104: "Ì", 105: "Í", 106: "—"
},
"uncommon": {
0: "Ô", 1: "!", 2: "\"", 3: "#", 4: "$", 5: "%", 6: "&", 7: "'",
8: "(", 9: ")", 10: "*", 11: "+", 12: ",", 13: "-", 14: ".", 15: "/",
16: "0", 17: "1", 18: "2", 19: "3", 20: "4", 21: "5", 22: "6", 23: "7",
24: "8", 25: "9", 26: ":", 27: ";", 28: "<", 29: "=", 30: ">", 31: "?",
32: "@", 33: "A", 34: "B", 35: "C", 36: "D", 37: "E", 38: "F", 39: "G",
40: "H", 41: "I", 42: "J", 43: "K", 44: "L", 45: "M", 46: "N", 47: "O",
48: "P", 49: "Q", 50: "R", 51: "S", 52: "T", 53: "U", 54: "V", 55: "W",
56: "X", 57: "Y", 58: "Z", 59: "[", 60: "\\", 61: "]", 62: "^", 63: "_",
64: "`", 65: "a", 66: "b", 67: "c", 68: "d", 69: "e", 70: "f", 71: "g",
72: "h", 73: "i", 74: "j", 75: "k", 76: "l", 77: "m", 78: "n", 79: "o",
80: "p", 81: "q", 82: "r", 83: "s", 84: "t", 85: "u", 86: "v", 87: "w",
88: "x", 89: "y", 90: "z", 91: "{", 92: "|", 93: "}", 94: "~", 95: "È",
96: "É", 97: "Ê", 98: "Ë", 99: "Ì", 100: "Í", 101: "Î", 102: "Ï", 103: "Ð",
104: "Ñ", 105: "Ò", 106: "—"
},
"barcodesoft": {
0: "ü", 1: "!", 2: "\"", 3: "#", 4: "$", 5: "%", 6: "&", 7: "'",
8: "(", 9: ")", 10: "*", 11: "+", 12: ",", 13: "-", 14: ".", 15: "/",
16: "0", 17: "1", 18: "2", 19: "3", 20: "4", 21: "5", 22: "6", 23: "7",
24: "8", 25: "9", 26: ":", 27: ";", 28: "<", 29: "=", 30: ">", 31: "?",
32: "@", 33: "A", 34: "B", 35: "C", 36: "D", 37: "E", 38: "F", 39: "G",
40: "H", 41: "I", 42: "J", 43: "K", 44: "L", 45: "M", 46: "N", 47: "O",
48: "P", 49: "Q", 50: "R", 51: "S", 52: "T", 53: "U", 54: "V", 55: "W",
56: "X", 57: "Y", 58: "Z", 59: "[", 60: "\\", 61: "]", 62: "^", 63: "_",
64: "`", 65: "a", 66: "b", 67: "c", 68: "d", 69: "e", 70: "f", 71: "g",
72: "h", 73: "i", 74: "j", 75: "k", 76: "l", 77: "m", 78: "n", 79: "o",
80: "p", 81: "q", 82: "r", 83: "s", 84: "t", 85: "u", 86: "v", 87: "w",
88: "x", 89: "y", 90: "z", 91: "{", 92: "|", 93: "}", 94: "~", 95: "ð",
96: "ñ", 97: "ò", 98: "ó", 99: "ô", 100: "õ", 101: "ö", 102: "÷", 103: "ø",
104: "ù", 105: "ú", 106: "—"
}
}
var startCodes = {
"code128a": "Ë",
"code128b": "Ì",
"code128c": "Í"
}
var stopCodes = {
"common": "Î",
"uncommon": "Ó",
"barcodesoft": "û"
}
var checksums = {
"code128a": 103,
"code128b": 104,
"code128c": 105
}
var checksum = checksums[ specification ]
for ( var i = 0; i < barcode.length; i++ ) {
var char = fromMap[ fontMapping ][ barcode.charAt( i ).toString() ]
var result = char * ( i + 1 )
checksum += result
}
var startCode = startCodes[ specification ]
var checkSymbol = toMap[ fontMapping ][ checksum % 103 ]
var stopCode = stopCodes[ fontMapping ]
event.value = startCode + barcode + checkSymbol + stopCode
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment