Last active
December 1, 2021 21:25
-
-
Save andrewodri/894cc2e9c34e30a95ba33add6355b1cf to your computer and use it in GitHub Desktop.
Code 128 generator for Acrobat PDF actions
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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