ソースを参照

Add CODE128 barcode support

Neal Wilson 8年前
コミット
a51c1beb88
4個のファイルの変更134行の追加0行の削除
  1. 3
    0
      README
  2. 29
    0
      config/Scripts/barcode.css
  3. 73
    0
      config/Scripts/barcode.js
  4. 29
    0
      config/Windows/batchdetailsnew.xml

+ 3
- 0
README ファイルの表示

77
 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
77
 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
78
 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
78
 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
79
 SOFTWARE.
79
 SOFTWARE.
80
+
81
+CODE128 support inn batch tags is based on code from:
82
+https://itlearnings.wordpress.com/2011/01/08/javascript-code128-barcode/

+ 29
- 0
config/Scripts/barcode.css ファイルの表示

1
+/*==============================================================
2
+                CODE 128 styles
3
+===============================================================*/
4
+
5
+.barcode128h  {
6
+    clear: both;
7
+    padding: 0 10px /*quiet zone*/;
8
+    overflow: auto;
9
+    height: 0.35in   /*size*/;
10
+    margin-top: 20px;
11
+    margin-bottom: 20px;
12
+}
13
+ 
14
+.barcode128h div {
15
+    /*float: left;*/
16
+    height: 0.2 in  /*size*/;
17
+    display: inline;
18
+}
19
+ 
20
+.barcode128h .bar1 { border-left: 2px solid black }
21
+.barcode128h .bar2 { border-left: 4px solid black }
22
+.barcode128h .bar3 { border-left: 6px solid black }
23
+.barcode128h .bar4 { border-left: 8px solid black }
24
+.barcode128h .space0 { margin-right: 0px }
25
+.barcode128h .space1 { margin-right: 2px }
26
+.barcode128h .space2 { margin-right: 4px }
27
+.barcode128h .space3 { margin-right: 6px }
28
+.barcode128h .space4 { margin-right: 8px }
29
+ 

+ 73
- 0
config/Scripts/barcode.js ファイルの表示

1
+BARS       = [212222,222122,222221,121223,121322,131222,122213,122312,132212,221213,221312,231212,112232,122132,122231,113222,123122,123221,223211,221132,221231,213212,223112,312131,311222,321122,321221,312212,322112,322211,212123,212321,232121,111323,131123,131321,112313,132113,132311,211313,231113,231311,112133,112331,132131,113123,113321,133121,313121,211331,231131,213113,213311,213131,311123,311321,331121,312113,312311,332111,314111,221411,431111,111224,111422,121124,121421,141122,141221,112214,112412,122114,122411,142112,142211,241211,221114,413111,241112,134111,111242,121142,121241,114212,124112,124211,411212,421112,421211,212141,214121,412121,111143,111341,131141,114113,114311,411113,411311,113141,114131,311141,411131,211412,211214,211232,23311120];
2
+START_BASE = 38
3
+STOP       = 106 //BARS[STOP]==23311120 (manually added a zero at the end)
4
+ 
5
+var fromType128 = {
6
+    A: function(charCode) {
7
+        if (charCode>=0 && charCode<32)
8
+            return charCode+64;
9
+        if (charCode>=32 && charCode<96)
10
+            return charCode-32;
11
+        return charCode;
12
+    },
13
+    B: function(charCode) {
14
+        if (charCode>=32 && charCode<128)
15
+            return charCode-32;
16
+        return charCode;
17
+    },
18
+    C: function(charCode) {
19
+        return charCode;
20
+    }
21
+};
22
+ 
23
+function code128(code, barcodeType) {
24
+    if (arguments.length<2)
25
+        barcodeType = code128Detect(code);
26
+    if (barcodeType=='C' && code.length%2==1)
27
+        code = '0'+code;
28
+    var a = parseBarcode128(code,  barcodeType);
29
+    return bar2html128(a.join('')) ;//+ '<label>' + code + '</label>';
30
+}
31
+ 
32
+ 
33
+function code128Detect(code) {
34
+    if (/^[0-9]+$/.test(code)) return 'C';
35
+    if (/[a-z]/.test(code)) return 'B';
36
+    return 'A';
37
+}
38
+ 
39
+function parseBarcode128(barcode, barcodeType) {
40
+    var bars = [];
41
+    bars.add = function(nr) {
42
+        var nrCode = BARS[nr];
43
+        this.check = this.length==0 ? nr : this.check + nr*this.length;
44
+        this.push( nrCode || format("UNDEFINED: %1->%2", nr, nrCode) );
45
+    };
46
+ 
47
+    bars.add(START_BASE + barcodeType.charCodeAt(0));
48
+    for(var i=0; i<barcode.length; i++)
49
+    {
50
+        var code = barcodeType=='C' ? +barcode.substr(i++, 2) : barcode.charCodeAt(i);
51
+        converted = fromType128[barcodeType](code);
52
+        if (isNaN(converted) || converted<0 || converted>106)
53
+            throw new Error(format("Unrecognized character (%1) at position %2 in code '%3'.", code, i, barcode));
54
+        bars.add( converted );
55
+    }
56
+    bars.push(BARS[bars.check % 103], BARS[STOP]);
57
+ 
58
+    return bars;
59
+}
60
+ 
61
+function format(c){
62
+    var d=arguments;
63
+    var e= new RegExp("%([1-"+(arguments.length-1)+"])","g");
64
+    return(c+"").replace(e,function(a,b){return d[b]})
65
+}
66
+ 
67
+function bar2html128(s) {
68
+    for(var pos=0, sb=[]; pos<s.length; pos+=2)
69
+    {
70
+        sb.push('<div class="bar' + s.charAt(pos) + ' space' + s.charAt(pos+1) + '"></div>');
71
+    }
72
+    return sb.join('');
73
+}

+ 29
- 0
config/Windows/batchdetailsnew.xml ファイルの表示

527
                 styleFile.open(1);
527
                 styleFile.open(1);
528
                 output.writeTextElement("style", styleFile.readToString());
528
                 output.writeTextElement("style", styleFile.readToString());
529
                 styleFile.close();
529
                 styleFile.close();
530
+                
531
+                styleFile = new QFile(QSettings.value("config") + "/Scripts/barcode.css");
532
+                styleFile.open(1);
533
+                output.writeTextElement("style", styleFile.readToString());
534
+                styleFile.close();
535
+                
530
                 output.writeStartElement("script");
536
                 output.writeStartElement("script");
531
                 scriptFile = new QFile(QSettings.value("config") + "/Scripts/qrcode.js");
537
                 scriptFile = new QFile(QSettings.value("config") + "/Scripts/qrcode.js");
532
                 scriptFile.open(1);
538
                 scriptFile.open(1);
533
                 output.writeCDATA(scriptFile.readToString());
539
                 output.writeCDATA(scriptFile.readToString());
534
                 scriptFile.close();
540
                 scriptFile.close();
535
                 output.writeEndElement();
541
                 output.writeEndElement();
542
+                
543
+                output.writeStartElement("script");
544
+                scriptFile = new QFile(QSettings.value("config") + "/Scripts/barcode.js");
545
+                scriptFile.open(1);
546
+                output.writeCDATA(scriptFile.readToString());
547
+                scriptFile.close();
548
+                output.writeEndElement();
549
+                
536
                 output.writeEndElement();
550
                 output.writeEndElement();
537
                 output.writeStartElement("body");
551
                 output.writeStartElement("body");
538
                 output.writeStartElement("h1");
552
                 output.writeStartElement("h1");
541
                 output.writeTextElement("span", "Roasted at: " + batchTime);
555
                 output.writeTextElement("span", "Roasted at: " + batchTime);
542
                 output.writeTextElement("span", "On machine: " + machine);
556
                 output.writeTextElement("span", "On machine: " + machine);
543
                 output.writeTextElement("span", "Batch file: " + fileID);
557
                 output.writeTextElement("span", "Batch file: " + fileID);
558
+                
559
+                output.writeStartElement("div");
560
+                output.writeAttribute("id", "barcode");
561
+                output.writeAttribute("class", "barcode128h");
562
+                output.writeAttribute("align", "center");
563
+                output.writeEndElement();
564
+                
565
+                output.writeStartElement("script");
566
+                var c128data = 'var strBarcodeHTML = code128("';
567
+                c128data += fileID;
568
+                c128data += '", "C");'
569
+                c128data += 'document.getElementById("barcode").innerHTML = strBarcodeHTML;';
570
+                output.writeCDATA(c128data);
571
+                output.writeEndElement();
572
+                
544
                 output.writeStartElement("div");
573
                 output.writeStartElement("div");
545
                 output.writeAttribute("id", "container");
574
                 output.writeAttribute("id", "container");
546
                 output.writeEndElement();
575
                 output.writeEndElement();

読み込み中…
キャンセル
保存