diff options
Diffstat (limited to 'share/extensions/Barcode/UPCA.py')
| -rw-r--r-- | share/extensions/Barcode/UPCA.py | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/share/extensions/Barcode/UPCA.py b/share/extensions/Barcode/UPCA.py new file mode 100644 index 000000000..b67d0830b --- /dev/null +++ b/share/extensions/Barcode/UPCA.py @@ -0,0 +1,58 @@ +''' +Copyright (C) 2007 Martin Owens + +Thanks to Lineaire Chez of Inkbar ( www.inkbar.lineaire.net ) + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +''' + +import EAN13 +from EAN13 import mapLeftFaimly, guardBar, centerBar, mapRight +import sys + +class Object(EAN13.Object): + def encode(self, number): + result = '' + + if len(number) < 11 or len(number) > 12 or not number.isdigit(): + sys.stderr.write("Can not encode '" + number + "' into UPC-A Barcode, Size must be 11 numbers only, and 1 check digit (optional).\n") + return + + if len(number) == 11: + number = number + self.getChecksum(number) + else: + if not self.varifyChecksum(number): + sys.stderr.write("EAN13 Checksum not correct for this barcode, omit last charicter to generate new checksum.\n") + return + + result = result + guardBar + + i = 0 + for i in range(0,6): + result += mapLeftFaimly[0][int(number[i])] + + result += centerBar + + for i in range (6,12): + result += mapRight[int(number[i])] + + result = result + guardBar; + + self.label = number[0] + ' ' + number[1:6] + ' ' + number[6:11] + ' ' + number[11] + self.inclabel = self.label + return result; + + def fontSize(self): + return '10' |
