改造成功,发代码,求测试
var test=prompt ('请输入UPC/A条码前11位数字', '', undefined)
//定义UPC/A条码的三个字符子集,每行分别为0~9,每列为A,B,C
var encoding=Array (
Array("0001101", "0100111", "1110010"),
Array("0011001", "0110011", "1100110"),
Array("0010011", "0011011", "1101100"),
Array("0111101", "0100001", "1000010"),
Array("0100011", "0011101", "1011100"),
Array("0110001", "0111001", "1001110"),
Array("0101111", "0000101", "1010000"),
Array("0111011", "0010001", "1000100"),
Array("0110111", "0001001", "1001000"),
Array("0001011", "0010111", "1110100") );
//根据第一位数选择第2-7位数所用的字符集
var first=Array ("000000","001011","001101","001110","010011","011001","011100","010101","010110","011010");
test=test.substr(0,11) //取第1位至第11位
test="0"+test; //在前面加0
//计算奇数位总和
ji=0;
for (i=1;i<13;i+=2){ji+=parseInt(test.charAt(i-1))}
//计算偶数位总和
ou=0;
for (i=2;i<13;i+=2){ou+=parseInt(test.charAt(i-1))}
//将奇数位和与偶数位和的三倍相加
end=ji+ou*3;
//取结果的个位数
end=(String(end).charAt(String(end).length-1));
//用10减去个位数,得到校验码数字
end=10-end;
if (end==10){end=0} //如果个位数为0则校验码也为0
test += String(end); //加上第13位的校验码
//alert(test); //得到完整的13位数字
seq = first[ test.charAt(0) ];//根据第1位数选用左侧数据区的字符集
var ean = "101"; //开始
//左侧数据区编码
for(var i=1; i<7; i++){
ean +=encoding[ test.charAt(i)][seq.charAt(i-1)] ;
}
ean+= "01010"; //中间
//右侧数据区编码
for(var i=7; i<13; i++){
ean += encoding[test.charAt(i)][2];
}
ean += "101"; //结束
//alert (ean); //得到条码二进制
//根据条码二进制画出条码
doc = activeDocument;
blackColor = new CMYKColor();
blackColor.cyan = 0;
blackColor.magenta = 0;
blackColor.yellow = 0;
blackColor.black = 100;
var barcode1 = doc.groupItems.add();
x=0;
y=0;
l=0.93544;//每一条线宽度
h=69.5;//分隔线高度
h2=64.8;//条码线高度
for (i=0;i
if (ean.charAt(i)=="1"){
if (i<3){hh=h}
if (i>2 && i<45){hh=h2}
if (i>44 && i<50){hh=h}
if (i>49 && i<92){hh=h2}
if (i>91){hh=h}
var rect = barcode1.pathItems.rectangle( y+h, x+i*l, l, hh );
rect.fillColor=blackColor;
rect.strokeColor= NoColor;
}}
//加上条码数字
var t2 = barcode1.textFrames.add();
t2.contents = test.substr(1,1)+" "+test.substr(2,5)+" "+test.substr(7,5)+" "+test.substr(12,1)
t2.textRange.characterAttributes.size=12.64;
ocrfont=0;
//在字体中寻找“OCR-B 10 BT”这个字体
for (i=0;i
if (String(app.textFonts[i].family)=="OCR-B 10 BT"){ocrfont=i;break;}
}
t2.textRange.characterAttributes.textFont= app.textFonts[ocrfont]; //设置字体
//设置条码数字位置
t2.left = x-9;
t2.top = y+6;
t2.textRange.kerning=-25; //设置字距