Skip to main content
dublove
Legend
April 6, 2021
Question

Found an en-13 ISBN script, some places I can't modify

  • April 6, 2021
  • 0 replies
  • 271 views

How to set the number spacing of the second part (787555)?

And the third part of the number spacing (813798)

 

Also, I don't know:

Where is the height of the lines marked by the three circles set?

 

 

 

var pointTextRef2 = EANGroup.textFrames.add();
pointTextRef2.textRange.size = 12.6;
pointTextRef2.contents = EAN.substring(1,7);
pointTextRef2.top = (zY-blkH+0.8)*mm;
pointTextRef2.left = (zX+0.8)*mm;
pointTextRef2.textRange.characterAttributes.textFont =  textFonts.getByName("OCRB10BT");

 

 The complete code is here

 

// Создание штрихкода EAN-13 v 2.1 
// (с) 2010-2016. Ягупов Дмитрий
// www.za-vod.ru
// info@za-vod.ru


// Create Barcode EAN-13 v 2.1
// (с) 2010-2016. Dmitry Yagupov 
// www.za-vod.ru
// info@za-vod.ru


#target illustrator
var fos =  Folder.fs;
//Get fullPath to Script file
if (fos == 'Windows'){
var pathJSX=$.fileName;
pathJSX = pathJSX.substring(0,pathJSX.lastIndexOf("\\"));
pathJSX = replace_string(pathJSX,'\\','/');
pathJSX = '/'+replace_string(pathJSX,':','');
}
else{
    
    var pathJSX=Folder.myDocuments;
//var pathJSX=Folder.desktop;
	}
	var mm=2.834645669; //convert point to mm
	var docPreset = new DocumentPreset;
	docPreset.units = RulerUnits.Millimeters;
	docPreset.width = 210*mm;
	docPreset.height = 297*mm;
    //docPreset.title = "Test Document";
	docPreset.colorMode = DocumentColorSpace.CMYK;



    try{
var docRef = activeDocument;


            }
    catch(ex){
 //alert(ex);		
		}


if (!docRef) {
	docRef = app.documents.addDocument(DocumentColorSpace.CMYK,docPreset);		
	//docRef = app.documents.add();  
	}


var EANGroup = docRef.groupItems.add(); // добавляем группу
//Read  INI File
var myINIFile = new File(pathJSX+'/barcode.ini');
var openIni = myINIFile.open('e'); // 'e' read-write open file.


           if (myINIFile.length == 0) {
 //Write  default INI file
        myINIFile. writeln('0'); // Start Coord X               
        myINIFile. writeln('0'); // Start Coord Y              
        myINIFile. writeln('Y'); // Chk Scale              
        myINIFile. writeln('N'); // Chk layer              
        myINIFile. writeln('100'); // Scale
        myINIFile. writeln('N');  // Chk DopParam
        myINIFile. writeln('1'); //Pages
        myINIFile. writeln('1'); //N Column
        myINIFile. writeln('1'); //N Row
        myINIFile. writeln('1'); // Dist Column
        myINIFile. writeln('1'); // Dist Row
	    myINIFile. writeln('/c'); // Path to Save AI Files		
        myINIFile.close();          
        
           myINIFile = new File(pathJSX+'/barcode.ini');
           var openIni = myINIFile.open('e'); // 'e' read-write open file.

}
if (!openIni){
var newPosX = '0';           
var newPosY = '0';           
//Read Check New Layer
var newLayer = 'Y';           
//Read Check Scale 
var newCheckScale = 'N';           
//Read Scale volume
var newScale = '100';           
//Read Clone Barcode
var newCheckClone = 'N';           
// Read Pages
var Pages = '1';       //Количество страниц при многостраничном документе    
//Read Column
var newColumn = '1';           
//Read Row
var newRow = '1';           
//Read ColumnDistance
var newColumnDist = '1';           
//Read RowDistance
var newRowDist = '1';  
//Read Full Path To Save AI Files
var destFolder = '/';     
    }
else{
//Read position 
var newPosX = myINIFile. readln();           
var newPosY = myINIFile. readln();           
//Read Check New Layer
var newLayer = myINIFile. readln();           
//Read Check Scale 
var newCheckScale = myINIFile. readln();           
//Read Scale volume
var newScale = myINIFile. readln();           
//Read  Check Extendet Parameters
var newCheckClone = myINIFile. readln();           
// Read Pages
var Pages = myINIFile. readln();       //Количество страниц при многостраничном документе    
//Read Column
var newColumn = myINIFile. readln();           
//Read Row
var newRow = myINIFile. readln();           
//Read ColumnDistance
var newColumnDist = myINIFile. readln();           
//Read RowDistance
var newRowDist = myINIFile. readln();  
//Read Full Path To Save AI Files
var destFolder = myINIFile. readln(); 

myINIFile.close();          
}  
var destFolderEncode = Folder.decode(destFolder);

var blk = 0.33;//条码宽度
var blkD = blk*7;
var blkE= blk*3;
var blkC= blk*5;
var blkH = 18.5; //Height standart bar
var blkHE = blkH+1.32; // Height extendet bar
//var blkHE = 24.5; // Height extendet bar
var zX=0; // X缩进值
var zY=0; // Y缩进值
var XGr=125; // 单条码组坐标。X
var YGr=140; // 单条码组坐标。Y
var ColMatrix=1; // 多条条码的列数
var RowMatrix=1; // 多行数
var DistRow=1; // 多条码列间距
var DistCol=1; // 多条码行间距
var namePages='EAN13-'; //页面标题前缀
var stepToNext=0;
var pathPrefix = null; // Name Disk from Path to Barcode AI files in ExtDialog
var pathLastFolder = null; // Text Last Folder from Path to Barcode AI files in ExtDialog
var textDlgPathAI = null; // Text Full Path to Barcode AI files in ExtDialog


var tablEAN= new Array(10);

tablEAN[0]="AAAAAA";
tablEAN[1]="AABABB";
tablEAN[2]="AABBAB";
tablEAN[3]="AABBBA";
tablEAN[4]="ABAABB";
tablEAN[5]="ABBAAB";
tablEAN[6]="ABBBAA";
tablEAN[7]="ABABAB";
tablEAN[8]="ABABBA";
tablEAN[9]="ABBABA";

var EAN = "";
var nowEnter="";




// Set Zero point ruler on Document
//Set Page Size to A4
docRef.width=210*mm;
docRef.height = 297*mm;
docRef.units = RulerUnits.Millimeters;



var hDoc = docRef.height;
var wDoc = docRef.width;

docRef.rulerOrigin = Array(0, hDoc); // Zero point ruler to left-top corner 



// Set color values for the CMYK object
var barColor = new CMYKColor();
barColor.black = 100;
barColor.cyan = 0;
barColor.magenta = 0;
barColor.yellow = 0;


//*******************************************
// Create Dialog Window

var win = new Window ("dialog {text:'EAN-13 ver 2.1  ||  (c) 2016 za-vod.ru', preferredSize:[329, 383], \
  tPanel0:Panel {type:'tabbedpanel', preferredSize:[295, 354], \
    tTab0:Panel {type:'tab', text:'Default param', \
      coord:Panel {text:'Barcode placed to:', orientation:'row', alignment:['center', 'top'], \
        name1:Group { \
          s1:StaticText {text:'X:'}, \
          e1:EditText {text:'0', characters:6}, \
          s2:StaticText {text:'mm   Y:'}, \
          e2:EditText {text:'0', characters:6}, \
          s3:StaticText {text:'mm'}}}, \
      digit12:Panel {text:'EAN-13', \
        name2:Group {orientation:'row', \
          s:StaticText {text:' 输入12位数字代码:'}, \
          e:EditText {text:'97875558137', helpTip:'输入EAN代码的前12位数字', characters:12}, \
          sh:StaticText {text:'<?>'}}}, \
      dopparamonoff:Panel {text:'', visible:false, \
        progressTxt:StaticText {text:'Progress:'}, \
        progressSave:Progressbar {value:0, minvalue:0, maxvalue:100}}, \
      buttons:Group {orientation:'row', alignment:['center', 'center'], \
        okBtn:Button {text:'OK'}, \
        cancelBtn:Button {text:'Cancel'}}, \
      gFrame:Group {orientation:'row', alignment:['center', 'center']}}, \
    tTab1:Panel {type:'tab', text:'Extendet param', \
      dopparam:Panel {text:'', orientation:'column', \
        name3:Group {orientation:'column', \
          chkLayer:Checkbox {text:'Barcode to new layer \"EAN-13\" ', alignment:['left', ''], value:true}, \
          chkScale:Checkbox {text:'条形码缩放到 (80-120%) ', alignment:['left', ''], value:false}, \
          sScale:StaticText {text:'Only 80-120%'}, \
          eScale:EditText {text:'100', helpTip:'如果需要缩放条形码,请输入缩放参数.', characters:6, enabled:false}}}, \
      heightBarcode:Group {orientation:'row', \
        sHeight:StaticText {text:'条形码高度 (min 10 mm): '}, \
        eHeight:EditText {text:'22.8', helpTip:'输入条形码的高度. By default: 22.8 mm', characters:6}, \
        sHeightMM:StaticText {text:'mm'}}, \
      pages:Group {orientation:'row', alignChildren:['center', 'center'], \
        sPages:StaticText {text:'Pages'}, \
        ePages:EditText {text:'1', helpTip:'Enter number pages', characters:4}}, \
      pathAI:Group {orientation:'column', alignChildren:['center', ''], \
        sPath:StaticText {text:'Change Folder', helpTip:'Path to save your AI files', characters:30}, \
        PathBtn:Button {text:'Select folder to Save AI'}}, \
      name4:Group {orientation:'row', alignChildren:['right', ''], \
        sColumn:StaticText {text:'Columns'}, \
        eColumn:EditText {text:'1', characters:4}, \
        sRow:StaticText {text:'Rows'}, \
        eRow:EditText {text:'1', characters:4}}, \
      name5:Group {orientation:'row', alignChildren:['right', ''], \
        sDistanceX:StaticText {text:'Beth Columns'}, \
        eDistanceX:EditText {text:'1', characters:4}, \
        sDistanceY:StaticText {text:'Beth Rows'}, \
        eDistanceY:EditText {text:'1', characters:4}, \
        sDistanceYmm:StaticText {text:'mm'}}, \
      buttons:Group {orientation:'row', alignment:['center', ''], \
        extokBtn:Button {text:'存储扩展'}}}}}");


var sScale = win.tPanel0.tTab1.dopparam.name3.sScale;
var gfx = sScale.graphics;
gfx.foregroundColor = gfx.newPen(gfx.PenType.SOLID_COLOR, [1, 0, 0, 1], 1);


win.tPanel0.tTab0.coord.name1.e1.text = newPosX;
win.tPanel0.tTab0.coord.name1.e2.text = newPosY;

// Colorise 
var colorEAN = win.tPanel0.tTab0.digit12.graphics;
var myBrush = colorEAN.newBrush(colorEAN.BrushType.SOLID_COLOR, [0.5, 0.5, 0.5, 1]);
colorEAN.backgroundColor = myBrush;
var g = win.tPanel0.tTab1.pathAI.sPath;
var gGraph = g.graphics;
gGraph.font = ScriptUI.newFont("OCRB10BT","",16.238);
//gGraph.font = ScriptUI.newFont("OCRB10BT","BOLD",10.238);


if (newLayer=='Y'){
win.tPanel0.tTab1.dopparam.name3.chkLayer.value= true;
}
else win.tPanel0.tTab1.dopparam.name3.chkLayer.value= false;

if (newCheckScale=='Y'){
win.tPanel0.tTab1.dopparam.name3.chkScale.value= true;
win.tPanel0.tTab1.dopparam.name3.eScale.text= newScale;
win.tPanel0.tTab1.dopparam.name3.eScale.enabled= true;
}
else {
win.tPanel0.tTab1.dopparam.name3.chkScale.value= false;
win.tPanel0.tTab1.dopparam.name3.eScale.text= '100';
win.tPanel0.tTab1.dopparam.name3.eScale.enabled= false;
}

if (newCheckClone=='Y'){
	//win.tPanel0.tTab0.dopparamonoff.chkExtParam.value = true;
  //win.tPanel0.tTab0.dopparamonoff.extparamBtn.enabled = true; 
 //  win.tPanel0.tTab1.dopparam.name3.chkMatrix.value= true; 
   win.tPanel0.tTab1.pages.ePages.enabled = true;
   win.tPanel0.tTab1.name4.eColumn.enabled = true;
   win.tPanel0.tTab1.name4.eRow.enabled = true;
   win.tPanel0.tTab1.name5.eDistanceX.enabled = true;
   win.tPanel0.tTab1.name5.eDistanceY.enabled = true;  
   win.tPanel0.tTab1.pages.ePages.text = Pages;

   textDlgPathAI = ''+ destFolderEncode; 
//===========
	if (textDlgPathAI.length > 40) {

        if (fos == 'Windows'){
		pathPrefix = textDlgPathAI.substring(1,2)+':';
                                        }
        else{            	
            pathPrefix = textDlgPathAI.substring(textDlgPathAI.indexOf('/',13),textDlgPathAI.indexOf('/',16));
            pathPrefix = '~' + pathPrefix;

            }
		pathPrefix= pathPrefix.toUpperCase();
		pathLastFolder = textDlgPathAI.substring(textDlgPathAI.lastIndexOf("/"));
		textDlgPathAI= 'Path to Save AI -> ' + pathPrefix + '...' + pathLastFolder;
		win.tPanel0.tTab1.pathAI.sPath.text = textDlgPathAI ;
        win.tPanel0.tTab1.pathAI.sPath.helpTip = destFolderEncode;
		}
	else{
                if (fos == 'Windows'){
		pathPrefix = textDlgPathAI.substring(1,2)+':';
		pathLastFolder = textDlgPathAI.substring(2);
                                        }
        else{
            pathPrefix = '~';
		pathLastFolder = textDlgPathAI.substring(15);
                }
		textDlgPathAI= 'Path to Save AI -> ' + pathPrefix +  pathLastFolder;		
		win.tPanel0.tTab1.pathAI.sPath.text = textDlgPathAI ;
        win.tPanel0.tTab1.pathAI.sPath.helpTip = destFolderEncode;
			}

//==========


   win.tPanel0.tTab1.name4.eColumn.text = newColumn;
   win.tPanel0.tTab1.name4.eRow.text = newRow;
   win.tPanel0.tTab1.name5.eDistanceX.text = newColumnDist;
   win.tPanel0.tTab1.name5.eDistanceY.text = newRowDist;     
    }
else{

   win.tPanel0.tTab1.pages.ePages.enabled = false;
   win.tPanel0.tTab1.name4.eColumn.enabled = false;
   win.tPanel0.tTab1.name4.eRow.enabled = false;
   win.tPanel0.tTab1.name5.eDistanceX.enabled = false;
   win.tPanel0.tTab1.name5.eDistanceY.enabled = false;   
   win.tPanel0.tTab1.pages.ePages.text = '1';   
   win.tPanel0.tTab1.name4.eColumn.text = '1';
   win.tPanel0.tTab1.name4.eRow.text = '1';
   win.tPanel0.tTab1.name5.eDistanceX.text = '1';
   win.tPanel0.tTab1.name5.eDistanceY.text = '1';      
    }



// Draw logo



var colorFr = win.tPanel0.tTab0.gFrame.graphics;
var btnFrame = win.tPanel0.tTab0.gFrame;
btnFrame.size = [130,150];
btnFrame.margins = [10,50,10,50];

var myFrBrush = colorFr.newBrush(colorFr.BrushType.SOLID_COLOR, [0.1, 0.4, 0, 1]);

btnFrame.LineColorContur = btnFrame.graphics.newPen(btnFrame.graphics.PenType.SOLID_COLOR, [1, 0, 0, 1],1 );
btnFrame.BrushColorRect = btnFrame.graphics.newBrush(btnFrame.graphics.BrushType.SOLID_COLOR, [1, 0, 0, 1]);

btnFrame.LineConturBlack = btnFrame.graphics.currentPath;
btnFrame.onDraw = customDrawBar;


btnFrame.text = "Barcode    EAN-13";  
btnFrame.textPen = btnFrame.graphics.newPen (btnFrame.graphics.PenType.SOLID_COLOR,[0,0,0,1], 1);
btnFrame.text2 = "http://za-vod.ru";  
btnFrame.textPen = btnFrame.graphics.newPen (btnFrame.graphics.PenType.SOLID_COLOR,[0,0,0,1], 1);

colorFr.backgroundColor = myFrBrush;

function customDrawBar(){   
    with( this ) {  
graphics.drawOSControl();  
graphics.rectPath(10,10,2,55);  
graphics.rectPath(14,10,2,55); 
graphics.rectPath(18,10,4,50); 
graphics.rectPath(24,10,2,50); 
graphics.rectPath(28,10,2,50); 
graphics.rectPath(36,10,2,50); 
graphics.rectPath(40,10,2,50); 
graphics.rectPath(44,10,2,50); 
graphics.rectPath(50,10,4,50); 
graphics.rectPath(56,10,2,50); 
graphics.rectPath(60,10,2,50); 
graphics.rectPath(66,10,2,55); 
graphics.rectPath(70,10,2,55); 
graphics.rectPath(74,10,2,50); 
graphics.rectPath(78,10,2,50); 
graphics.rectPath(84,10,2,50); 
graphics.rectPath(88,10,4,50); 
graphics.rectPath(94,10,2,50); 
graphics.rectPath(98,10,2,50); 
graphics.rectPath(102,10,2,50); 
graphics.rectPath(108,10,6,50); 
graphics.rectPath(118,10,2,50); 
graphics.rectPath(122,10,2,55); 
graphics.rectPath(126,10,2,55); 

graphics.fillPath(graphics.newBrush(graphics.BrushType.SOLID_COLOR, [0, 0, 0, 1])); 
graphics.drawString(text,textPen,18,62,graphics.font);
graphics.drawString(text2,textPen,18,75,graphics.font);


}} 

// End Draw logo



		      
		      newCheckClone = 'Y';			 
           win.tPanel0.tTab1.pages.ePages.enabled = true;            
           win.tPanel0.tTab1.name4.eColumn.enabled = true;
           win.tPanel0.tTab1.name4.eRow.enabled = true;
           win.tPanel0.tTab1.name5.eDistanceX.enabled = true;
           win.tPanel0.tTab1.name5.eDistanceY.enabled = true;
            




//OnClick Save btn
win.tPanel0.tTab1.buttons.extokBtn.onClick = function ExtParamSave(){
    var txtSaveExt = "Ext param: Column - ";
    txtSaveExt = txtSaveExt+win.tPanel0.tTab1.name4.eColumn.text +" \n Row - ";
    txtSaveExt = txtSaveExt+win.tPanel0.tTab1.name4.eRow.text;
    writeINI();

    }

// Get Path for saved AI files
win.tPanel0.tTab1.pathAI.PathBtn.onClick = function(){
var olddestFolder=destFolder;
	destFolder = Folder.selectDialog( 'Select folder for Save Barcode files.', destFolder);
    if (!destFolder){
        destFolder=olddestFolder;// Bad code
        }
    destFolderEncode = Folder.decode(destFolder);
	textDlgPathAI = ''+ destFolderEncode; 

	if (textDlgPathAI.length > 40) {

        if (fos == 'Windows'){
		pathPrefix = textDlgPathAI.substring(1,2)+':';
                                        }
        else{            	
            pathPrefix = textDlgPathAI.substring(textDlgPathAI.indexOf('/',13),textDlgPathAI.indexOf('/',16));
            pathPrefix = '~' + pathPrefix;

            }
		pathPrefix= pathPrefix.toUpperCase();
		pathLastFolder = textDlgPathAI.substring(textDlgPathAI.lastIndexOf("/"));
		textDlgPathAI= 'Save AI to Folder -> ' + pathPrefix + '...' + pathLastFolder;
		win.tPanel0.tTab1.pathAI.sPath.text = textDlgPathAI ;
		win.tPanel0.tTab1.pathAI.sPath.helpTip = destFolderEncode;
		}
	else{
                if (fos == 'Windows'){
		pathPrefix = textDlgPathAI.substring(1,2)+':';
		pathLastFolder = textDlgPathAI.substring(2);
                                        }
        else{
         pathPrefix = '~';
		pathLastFolder = textDlgPathAI.substring(15);
                }
		textDlgPathAI= 'Save AI to Folder-> ' + pathPrefix +  pathLastFolder;		
		win.tPanel0.tTab1.pathAI.sPath.text = textDlgPathAI ;   
		win.tPanel0.tTab1.pathAI.sPath.helpTip = destFolderEncode;
			}
	}

// Check If enter only digit 0-9
win.tPanel0.tTab0.digit12.name2.e.onChanging = function (){    
ChangeEANInput();
    }

// If Pages >1 Get Path for saved AI files
win.tPanel0.tTab1.pages.ePages.onChanging = function(){
	var chngPages = parseInt(win.tPanel0.tTab1.pages.ePages.text);
if ( chngPages <1){
		//destFolder = null;
		win.tPanel0.tTab1.pages.ePages.text = '1';	
	}
	}


function ChangeEANInput(){
 	nowEnter = win.tPanel0.tTab0.digit12.name2.e.text;
	var vPattern = /[^0-9]/;
	var noneD = /\D/g;
	var result = vPattern.test(nowEnter);

if (result == true)
{
	nowEnter = nowEnter.replace(noneD, "") ;
	win.tPanel0.tTab0.digit12.name2.e.text = nowEnter;
    alert('Only numbers are permitted for this field.');
}

	
	if ( nowEnter.length > 12) {
		alert('You enter more 12 digit');
		nowEnter = nowEnter.substring(0,12);
		win.tPanel0.tTab0.digit12.name2.e.text =  nowEnter;
		
		}
	
    var chk13 = SUM13(nowEnter);    

    EAN = nowEnter+chk13;	
	win.tPanel0.tTab0.digit12.name2.sh.text = chk13;   
    
    }


// 高度场变化
win.tPanel0.tTab1.heightBarcode.eHeight.onChange = function ChangeHeghtInput(){
 	blkH = win.tPanel0.tTab1.heightBarcode.eHeight.text;
	var vPattern = /[^0-9.]/;
	var noneD = /\D/g;
	var result = vPattern.test(blkH);

if (result == true)
{
	blkH = blkH.replace(noneD, "") ;
	win.tPanel0.tTab1.heightBarcode.eHeight.text = blkH;
    alert('此字段只允许数字');
}

	
	if ( blkH.length > 4) {
		alert('输入4位以上');
		blkH = blkH.substring(0,4);
		win.tPanel0.tTab1.heightBarcode.eHeight.text =  blkH;
		}
	if (parseInt(blkH) < 10){
				alert('输入小于10 mm');
				win.tPanel0.tTab1.heightBarcode.eHeight.text =  '10';
				
		}
	
    
    }

// OK botton Click
win.tPanel0.tTab0.buttons.okBtn.onClick = function actionPlace() { 
    var enterDigits = win.tPanel0.tTab0.digit12.name2.e.text.length;
    var newLayer = win.tPanel0.tTab1.dopparam.name3.chkLayer.value;
    var enterScale = parseInt(win.tPanel0.tTab1.dopparam.name3.eScale.text);
    var ColMatrix=parseInt(win.tPanel0.tTab1.name4.eColumn.text);
    var RowMatrix=parseInt(win.tPanel0.tTab1.name4.eRow.text);
    var DistRow=parseInt(win.tPanel0.tTab1.name5.eDistanceX.text);
    var DistCol=parseInt(win.tPanel0.tTab1.name5.eDistanceX.text);
          Pages = parseInt(win.tPanel0.tTab1.pages.ePages.text);
         // alert("START Pages = "+ enterDigits);  
    var First12="";
    var GrHeight=0;
          //stepToNext++;
    var posXGroup = win.tPanel0.tTab0.coord.name1.e1.text;
          XGr = parseInt(posXGroup);    
    var posYGroup = win.tPanel0.tTab0.coord.name1.e2.text;    
          YGr = parseInt(posYGroup); 
	var FullPathToSave = null;
	var fileSaveBCode  = null;
	blkH= parseFloat(win.tPanel0.tTab1.heightBarcode.eHeight.text);
	blkHE = blkH +1.32; // Height extendet bar

    if ( win.tPanel0.tTab1.dopparam.name3.chkLayer.value == true) {
                chkLayer();
                                                                                }  
                                                                                        
            
    if ( enterDigits == 12) {   


        if (( enterScale < 80) || (enterScale >120))      // проверяем диапазон масштабирования 80-120%
            alert('比例不对。仅输入80-120%');        
        else {
           
             if (Pages > 1) {


                 //RowMatrix = RowMatrix/Pages;
                 // Show ProgressBar
                 win.tPanel0.tTab0.dopparamonoff.progressTxt.visible = true;
                 win.tPanel0.tTab0.dopparamonoff.progressSave.visible = true;                 
                 win.update();
                 
				 for (var p =1; p<=Pages; p++){

                     win.tPanel0.tTab0.dopparamonoff.progressSave.value = p/Pages*100; // update progressbar
                     win.update();
			  XGr = parseInt(posXGroup);
			  YGr = parseInt(posYGroup);
                docRef = app.documents.addDocument(DocumentColorSpace.CMYK,docPreset);	 

                EANGroup = docRef.groupItems.add(); // добавляем группу
                hDoc = docRef.height;
                wDoc = docRef.width;
                docRef.rulerOrigin = Array(0, hDoc);   
        if ( win.tPanel0.tTab1.dopparam.name3.chkLayer.value == true) {
                chkLayer();
                                                                                }             
                
             for ( var m=0; m<RowMatrix; m++){
                 for ( var n=0;n<ColMatrix;n++){
                  First12 =  EAN.substring(0,12);

        win.tPanel0.tTab0.digit12.name2.e.text  =  parseInt(First12)+stepToNext;
		stepToNext = 1;// Bad solution :(
        ChangeEANInput();

        CreatEAN(); // Рисуем штрихкод
        EANGroup.resize(enterScale,enterScale); // Масштабируем
        GrWidth=EANGroup.width/mm;  // Вычисляем ширину группы с одним штрихкодом      
        GrHeight=EANGroup.height/mm;  // Вычисляем высоту группы с одним штрихкодом              
        XGr=XGr+GrWidth+ parseInt(win.tPanel0.tTab1.name5.eDistanceX.text); // Координата X следующего блока штрихкода
        EANGroup = docRef.groupItems.add(); // добавляем группу
        }
        XGr = parseInt(posXGroup); // Координата X следующего блока штрихкода
        YGr=YGr+GrHeight+ parseInt(win.tPanel0.tTab1.name5.eDistanceY.text); // Координата Y следующего блока штрихкода
        }

	FullPathToSave = destFolder+'/'+namePages+EAN+'.ai';	
		// Create the file object to save to
	fileSaveBCode = new File( FullPathToSave);

    docRef.saveAs(fileSaveBCode);
	docRef.close();
                 } // End For Pages
                 } // End If Pages >1
             else {
             for ( var m=0; m<RowMatrix; m++){
                 for ( var n=0;n<ColMatrix;n++){
                  First12 =  EAN.substring(0,12);

        win.tPanel0.tTab0.digit12.name2.e.text  =  parseInt(First12)+stepToNext;
		stepToNext = 1; // Bad solution :(
        ChangeEANInput();
        CreatEAN(); // 画条形码
        EANGroup.resize(enterScale,enterScale); // 规模
        GrWidth=EANGroup.width/mm;  // 线条宽度      
        GrHeight=EANGroup.height/mm;  // 线条高度            
        XGr=XGr+GrWidth+ parseInt(win.tPanel0.tTab1.name5.eDistanceX.text); // 下一个条形码X坐标
        EANGroup = docRef.groupItems.add(); // 添加组
        } // End For Column
        XGr = parseInt(posXGroup); // 下一个条形码X坐标
        YGr=YGr+GrHeight+ parseInt(win.tPanel0.tTab1.name5.eDistanceY.text); // 下一个条形码Y块X坐标
        } //End For Row
                } // End else if Pages =1
            writeINI(); // Записываем INI файл        
            actionCanceled(); // Заканчиваем скрипт


               
                }
        }
    else 
    alert ('不能输入12位数字');
    
}

//проверяем масштабирование
win.tPanel0.tTab1.dopparam.name3.chkScale.onClick = function addScale() {     
    if (win.tPanel0.tTab1.dopparam.name3.chkScale.value == true)    {
    win.tPanel0.tTab1.dopparam.name3.eScale.enabled = true;
    enterScale = parseInt(win.tPanel0.tTab1.dopparam.name3.eScale.text);
            }
    else {
    win.tPanel0.tTab1.dopparam.name3.eScale.enabled = false;    
    win.tPanel0.tTab1.dopparam.name3.eScale.text = '100';
    enterScale = 100;
    
    }
    }

win.tPanel0.tTab0.buttons.cancelBtn.onClick = function exitDlg() { 

	win.close();
    }


// Проверяем ввод только цифр  и диапазон 80-120%
win.tPanel0.tTab1.dopparam.name3.eScale.onChanging = function (){  
	var nowEnterScale = win.tPanel0.tTab1.dopparam.name3.eScale.text;
	var vPattern = /[^0-9]/;
	var noneD = /\D/g;
	var result = vPattern.test(nowEnterScale);

if (result == true)
{
	nowEnterScale = nowEnterScale.replace(noneD, "") ;
	win.tPanel0.tTab1.dopparam.name3.eScale.text = nowEnterScale;
    alert('此字段只允许数字');
}

	
	if ( nowEnterScale.length > 3) {
		alert('输入3位以上');
		nowEnterScale = nowEnterScale.substring(0,3);
		win.tPanel0.tTab1.dopparam.name3.eScale.text =  nowEnterScale;		
		}

    }

win.center(); 
win.show();


 function actionCanceled() { 

	win.close();
}

// Если нужен штрих-код на новом слое
function chkLayer(){
    //create layer "EAN-13" if exist
    try{
    var stL = docRef.layers.getByName('EAN-13') ;
            }
    catch(ex){
    var stL = docRef.layers.add();
            stL.name = "EAN-13";
                    }        
    EANGroup.move(stL, ElementPlacement.PLACEATEND);
    
    }



function replace_string(txt,cut_str,paste_str){ 
var f=0;
var ht='';
ht = ht + txt;
f=ht.indexOf(cut_str);
while (f!=-1){ 
//цикл для вырезания всех имеющихся подстрок 
f=ht.indexOf(cut_str);
if (f>0){
ht = ht.substr(0,f) + paste_str + ht.substr(f+cut_str.length);
};
};
return ht
};



function totext(){
    
    var over12 = dlg.alertBtnsPnl2.titleEt.text;
    if (over12.length >12 )
    dlg.alertBtnsPnl2.titleEt.text = over12.substring(0,12);
    var chk13 = SUM13(over12);    
    dlg.alertBtnsPnl2.TirSt.text = chk13;    
    EAN = over12+chk13;
    
    }


 


function CreatEAN(){

zX = 5;
zY = 5;

var chkSum13=SUM13(EAN);

// Начинаем рисовать штрихкод

SE();                                                                // стартовый блок

zX+=blkE;                                                        // смещение от первого блока
numBlokA1();                                                    // первый цифровой блок. Он всегда тип А
        
switch    (EAN.charAt(0)){

        case '0':
        for (var j=2;j<7;j++){
                numBlokAB(tablEAN[0].charAt(j-1),j); //  в зависимости от первой цифры кода выбираем последовательность АВ блоков из таблицы
                zX+=blkD;
                }
                CENTER();                                       // центральный блок
                zX+=blkC; 
        for (var u=7;u<13;u++){
                numBlokC(u);                                    // правая часть штрихкода - блок С
                zX+=blkD;
            }

        break;
        case '1':
        for (var j=2;j<7;j++){
                numBlokAB(tablEAN[1].charAt(j-1),j);
                zX+=blkD;
                }
                CENTER();
                zX+=blkC; 
        for (var u=7;u<13;u++){
                numBlokC(u);
                zX+=blkD;
            }

        break;
        case '2':
        for (var j=2;j<7;j++){
                numBlokAB(tablEAN[2].charAt(j-1),j);
                zX+=blkD;
                }
                CENTER();
                zX+=blkC; 
        for (var u=7;u<13;u++){
                numBlokC(u);
                zX+=blkD;
            }

        break;
        case '3':
        for (var j=2;j<7;j++){
                numBlokAB(tablEAN[3].charAt(j-1),j);
                zX+=blkD;
                }
                CENTER();
                zX+=blkC; 
        for (var u=7;u<13;u++){
                numBlokC(u);
                zX+=blkD;
            }

        break;
        case '4':
        for (var j=2;j<7;j++){
                numBlokAB(tablEAN[4].charAt(j-1),j);
                zX+=blkD;
                }
                CENTER();
                zX+=blkC; 
        for (var u=7;u<13;u++){
                numBlokC(u);
                zX+=blkD;
            }

        break;
        case '5':
        for (var j=2;j<7;j++){
                numBlokAB(tablEAN[5].charAt(j-1),j);
                zX+=blkD;
                }
                CENTER();
                zX+=blkC; 
        for (var u=7;u<13;u++){
                numBlokC(u);
                zX+=blkD;
            }

        break;
        case '6':
        for (var j=2;j<7;j++){
                numBlokAB(tablEAN[6].charAt(j-1),j);
                zX+=blkD;
                }
                CENTER();
                zX+=blkC; 
        for (var u=7;u<13;u++){
                numBlokC(u);
                zX+=blkD;
            }

        break;
        case '7':
        for (var j=2;j<7;j++){
                numBlokAB(tablEAN[7].charAt(j-1),j);
                zX+=blkD;
                }
                CENTER();
                zX+=blkC; 
        for (var u=7;u<13;u++){
                numBlokC(u);
                zX+=blkD;
            }

        break;
        case '8':
        for (var j=2;j<7;j++){
                numBlokAB(tablEAN[8].charAt(j-1),j);
                zX+=blkD;
                }
                CENTER();
                zX+=blkC; 
        for (var u=7;u<13;u++){
                numBlokC(u);
                zX+=blkD;
            }

        break;
        case '9':
        for (var j=2;j<7;j++){
                numBlokAB(tablEAN[9].charAt(j-1),j);
                zX+=blkD;
                }
                CENTER();
                zX+=blkC; 
        for (var u=7;u<13;u++){
                numBlokC(u);
                zX+=blkD;
            }
                
        break;

    }
                SE();           // конечный блок    
   
textEAN(); // Create digit TEXT for barcode
EANGroup.position =Array (XGr*mm,-YGr*mm); // Move  group barcode to position 
redraw();

}

//============== Function create text number code
function textEAN(){



zX = 5;
zY = 5;    
//条码下边第1个数字
var pointTextRef1 = EANGroup.textFrames.add();
pointTextRef1.textRange.size = 12.6;
pointTextRef1.contents = EAN.charAt(0);
pointTextRef1.top = (zY-blkH+0.8)*mm;
pointTextRef1.left = (zX-3.5)*mm;
pointTextRef1.textRange.characterAttributes.textFont =  textFonts.getByName("OCRB10BT");

//第码下第二段数字
var pointTextRef2 = EANGroup.textFrames.add();
pointTextRef2.textRange.size = 12.6;
pointTextRef2.contents = EAN.substring(1,7);
pointTextRef2.letterSpacing=-60;
pointTextRef2.top = (zY-blkH+0.8)*mm;
pointTextRef2.left = (zX+0.8)*mm;
pointTextRef2.textRange.characterAttributes.textFont =  textFonts.getByName("OCRB10BT");

//条码下第三段数字
var pointTextRef3 = EANGroup.textFrames.add();
pointTextRef3.textRange.size = 12.6;
pointTextRef3.contents = EAN.substring(7,13);
pointTextRef3.top = (zY-blkH+0.8)*mm;
pointTextRef3.left = (zX+16)*mm;
pointTextRef3.textRange.characterAttributes.textFont =  textFonts.getByName("OCRB10BT");


    
    }

//============ Функция отрисовки первого блока левой части. Он всегда типа А
function numBlokA1(){

    switch (EAN.charAt(1)){
                    case '0':
                        A_0();
                    break;            
                    case '1':
                        A_1();
                    break;            
                    case '2':
                        A_2();
                    break;            
                    case '3':
                        A_3();
                    break;            
                    case '4':
                        A_4();
                    break;            
                    case '5':
                        A_5();
                    break;            
                    case '6':
                        A_6();
                    break;            
                    case '7':
                        A_7();
                    break;            
                    case '8':
                        A_8();
                    break;            
                    case '9':
                        A_9();
                    break;            
            
            }
zX+=blkD;
    }


//============ Функция отрисовки правой части штрихкода. Он всегда типа С
function numBlokC(numC){

    switch (EAN.charAt(numC)){
        case '0':
        C_0();
        break;
        case '1':
        C_1();
        break;
        case '2':
        C_2();
        break;
        case '3':
        C_3();
        break;
        case '4':
        C_4();
        break;
        case '5':
        C_5();
        break;
        case '6':
        C_6();
        break;
        case '7':
        C_7();
        break;
        case '8':
        C_8();
        break;
        case '9':
        C_9();
        break;
        }

}

//============ Функция отрисовки блока левой части начиная со второй позиции.  В зависимости от таблицы numBlokAB.
function numBlokAB(ab,digBlok) {
    
    switch (ab){
        case 'A':
       switch (EAN.charAt(digBlok)){
                    case '0':
                        A_0();
                    break;            
                    case '1':
                        A_1();
                    break;            
                    case '2':
                        A_2();
                    break;            
                    case '3':
                        A_3();
                    break;            
                    case '4':
                        A_4();
                    break;            
                    case '5':
                        A_5();
                    break;            
                    case '6':
                        A_6();
                    break;            
                    case '7':
                        A_7();
                    break;            
                    case '8':
                        A_8();
                    break;            
                    case '9':
                        A_9();
                    break;            
            
                                    }
                    break;
                  
        case 'B':
   switch (EAN.charAt(digBlok)){
                    case '0':
                        B_0();
                    break;            
                    case '1':
                        B_1();
                    break;            
                    case '2':
                        B_2();
                    break;            
                    case '3':
                        B_3();
                    break;            
                    case '4':
                        B_4();
                    break;            
                    case '5':
                        B_5();
                    break;            
                    case '6':
                        B_6();
                    break;            
                    case '7':
                        B_7();
                    break;            
                    case '8':
                        B_8();
                    break;            
                    case '9':
                        B_9();
                    break;            
            
            }    
            break;
    
    
    }                
    }

// расчет контрольного числа - 13 цифры.
function SUM13(EAN12){
var sumSt1;
var sumSt2;
if (EAN12.length < 12)
sumSt2 ="<?>";
else {

sumSt1 =  parseInt(EAN12.charAt(1))+parseInt(EAN12.charAt(3))+parseInt(EAN12.charAt(5))+parseInt(EAN12.charAt(7))+parseInt(EAN12.charAt(9))+parseInt(EAN12.charAt(11));
sumSt1 *=3;
sumSt1 += parseInt(EAN12.charAt(0))+parseInt(EAN12.charAt(2))+parseInt(EAN12.charAt(4))+parseInt(EAN12.charAt(6))+parseInt(EAN12.charAt(8))+parseInt(EAN12.charAt(10));
sumSt2 = sumSt1%10;
 if (!(sumSt2 == 0))
                {
                    sumSt2 = 10 - sumSt2;
                }
			
else {
	sumSt2 = 0 ;
	
	}			
    }
return sumSt2;
    }


// функция отрисовки прямоугольника (левый угол X, левый угол Y, ширина, высота, делать ли прямоугольник guideline, залочить прямоугольник) с возможностью  сделать его  в виде guideline
function rectGuide(y1,x1,RGw,RGh,gd,lock) {
	var rect = EANGroup.pathItems.rectangle( x1*mm, y1*mm, RGw*mm, RGh*mm );
	rect.stroked = true;
	rect.filled = false;
	rect.guides = gd; // это св-во как раз и делает направляющие из линии
	rect.locked = lock; //заблокироваnm направляющие, 
}

//функция отрисовки прямоугольника (левый угол X, левый угол Y, ширина, высота, цвет заливки) без обводки

function rect(y1,x1,Rw,Rh,colorFill) {
	var rect = EANGroup.pathItems.rectangle( x1*mm, y1*mm, Rw*mm, Rh*mm );
      
	rect.stroked = false;
	rect.filled = true;
    rect.fillColor = colorFill;
}


// Отрисовка  блоков тип A, B, C

function A_0(){
  rect(zX+blk*3,zY,blk*2,blkH,barColor);   
  rect(zX+blk*6,zY,blk,blkH,barColor);   
    }
function A_1(){
  rect(zX+blk*2,zY,blk*2,blkH,barColor);   
  rect(zX+blk*6,zY,blk,blkH,barColor);   
    }
function A_2(){
  rect(zX+blk*2,zY,blk,blkH,barColor);   
  rect(zX+blk*5,zY,blk*2,blkH,barColor);   
    }
function A_3(){
  rect(zX+blk,zY,blk*4,blkH,barColor);   
  rect(zX+blk*6,zY,blk,blkH,barColor);   
    }
function A_4(){
  rect(zX+blk,zY,blk,blkH,barColor);   
  rect(zX+blk*5,zY,blk*2,blkH,barColor);   
    }
function A_5(){
  rect(zX+blk,zY,blk*2,blkH,barColor);   
  rect(zX+blk*6,zY,blk,blkH,barColor);   
    }
function A_6(){
  rect(zX+blk,zY,blk,blkH,barColor);   
  rect(zX+blk*3,zY,blk*4,blkH,barColor);   
    }
function A_7(){
  rect(zX+blk,zY,blk*3,blkH,barColor);   
  rect(zX+blk*5,zY,blk*2,blkH,barColor);   
    }
function A_8(){
  rect(zX+blk,zY,blk*2,blkH,barColor);   
  rect(zX+blk*4,zY,blk*3,blkH,barColor);   
    }
function A_9(){
  rect(zX+blk*3,zY,blk,blkH,barColor);   
  rect(zX+blk*5,zY,blk*2,blkH,barColor);   
    }

function B_0(){
  rect(zX+blk,zY,blk,blkH,barColor);   
  rect(zX+blk*4,zY,blk*3,blkH,barColor);   
    }
function B_1(){
  rect(zX+blk,zY,blk*2,blkH,barColor);   
  rect(zX+blk*5,zY,blk*2,blkH,barColor);   
    }
function B_2(){
  rect(zX+blk*2,zY,blk*2,blkH,barColor);   
  rect(zX+blk*5,zY,blk*2,blkH,barColor);   
    }
function B_3(){
  rect(zX+blk,zY,blk,blkH,barColor);   
  rect(zX+blk*6,zY,blk,blkH,barColor);   
    }
function B_4(){
  rect(zX+blk*2,zY,blk*3,blkH,barColor);   
  rect(zX+blk*6,zY,blk,blkH,barColor);   
    }
function B_5(){
  rect(zX+blk,zY,blk*3,blkH,barColor);   
  rect(zX+blk*6,zY,blk,blkH,barColor);   
    }
function B_6(){
  rect(zX+blk*4,zY,blk,blkH,barColor);   
  rect(zX+blk*6,zY,blk,blkH,barColor);   
    }
function B_7(){
  rect(zX+blk*2,zY,blk,blkH,barColor);   
  rect(zX+blk*6,zY,blk,blkH,barColor);   
    }
function B_8(){
  rect(zX+blk*3,zY,blk,blkH,barColor);   
  rect(zX+blk*6,zY,blk,blkH,barColor);   
    }
function B_9(){
  rect(zX+blk*2,zY,blk,blkH,barColor);   
  rect(zX+blk*4,zY,blk*3,blkH,barColor);   
    }

function C_0(){
  rect(zX,zY,blk*3,blkH,barColor);   
  rect(zX+blk*5,zY,blk,blkH,barColor);   
    }
function C_1(){
  rect(zX,zY,blk*2,blkH,barColor);   
  rect(zX+blk*4,zY,blk*2,blkH,barColor);   
    }
function C_2(){
  rect(zX,zY,blk*2,blkH,barColor);   
  rect(zX+blk*3,zY,blk*2,blkH,barColor);   
    }
function C_3(){
  rect(zX,zY,blk,blkH,barColor);   
  rect(zX+blk*5,zY,blk,blkH,barColor);   
    }
function C_4(){
  rect(zX,zY,blk,blkH,barColor);   
  rect(zX+blk*2,zY,blk*3,blkH,barColor);   
    }
function C_5(){
  rect(zX,zY,blk,blkH,barColor);   
  rect(zX+blk*3,zY,blk*3,blkH,barColor);   
    }
function C_6(){
  rect(zX,zY,blk,blkH,barColor);   
  rect(zX+blk*2,zY,blk,blkH,barColor);   
    }
function C_7(){
  rect(zX,zY,blk,blkH,barColor);   
  rect(zX+blk*4,zY,blk,blkH,barColor);   
    }
function C_8(){
  rect(zX,zY,blk,blkH,barColor);   
  rect(zX+blk*3,zY,blk,blkH,barColor);   
    }
function C_9(){
  rect(zX,zY,blk*3,blkH,barColor);   
  rect(zX+blk*4,zY,blk,blkH,barColor);   
    }

// Отрисовка  блоков типа Начало и Конец
function SE(){
    
  rect(zX,zY,blk,blkHE,barColor);   
  rect(zX+blk*2,zY,blk,blkHE,barColor);  

    }

// Отрисовка  блоков тип в Центре
function CENTER(){
  rect(zX+blk,zY,blk,blkHE,barColor);   
  rect(zX+blk*3,zY,blk,blkHE,barColor);   
    }
function writeINI(){

           var openF = myINIFile.open('e'); // 'e' read-write open file.
          
myINIFile. writeln(win.tPanel0.tTab0.coord.name1.e1.text);
myINIFile. writeln(win.tPanel0.tTab0.coord.name1.e2.text);
if (win.tPanel0.tTab1.dopparam.name3.chkLayer.value == true)
myINIFile. writeln('Y');
else
myINIFile. writeln('N');
if (win.tPanel0.tTab1.dopparam.name3.chkScale.value == true){
myINIFile. writeln('Y');
myINIFile. writeln(win.tPanel0.tTab1.dopparam.name3.eScale.text);
}
else{
myINIFile. writeln('N');
myINIFile. writeln('100');
}

myINIFile. writeln('Y');
myINIFile. writeln(win.tPanel0.tTab1.pages.ePages.text);
myINIFile. writeln(win.tPanel0.tTab1.name4.eColumn.text);
myINIFile. writeln(win.tPanel0.tTab1.name4.eRow.text);
myINIFile. writeln(win.tPanel0.tTab1.name5.eDistanceX.text);
myINIFile. writeln(win.tPanel0.tTab1.name5.eDistanceY.text);
                                                                             
myINIFile. writeln(destFolder);
myINIFile.close();          
}

 

 

This topic has been closed for replies.