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

Explorer ,
Apr 06, 2021 Apr 06, 2021

Copy link to clipboard

Copied

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?

ISBN.jpg

 

 

 

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();          
}

 

 

TOPICS
Bug, How to, Import and export, Scripting

Views

26

Likes

Translate

Translate

Report

Report
Community Guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
no replies

Have something to add?

Join the conversation