[AI CC-CC2019] Проблема с массивами

Dmitri_J

Участник
Топикстартер
Сообщения
51
Реакции
0
Доброго времени суток

Набросал небольшой скрипт который должен подписывать в углу документ и вроде как все работет но обратил внимание что после того как открываю след файл то сама подпись остаеться с предыдущего файла
добавлю часть кода Сразу приношу свои глубочайшие извинения за топорность кода

Код:
var doc = app.activeDocument;
var mm = 2.834645

//=========================================================================================================================
// ========================================================  COLORS  ======================================================
var newblack = new CMYKColor;
newblack.black = 100;

var noColor = new NoColor();

//=========================================================================================================================
//==========================================================  FONT  =======================================================
function findFontAr() {

    for (i = 0; i < app.textFonts.length - 1; i++) {
        if (app.textFonts[i].name == "MyriadPro-Semibold") { return (app.textFonts[i]) }
    }
    alert('Нету')
    return (null);
}
var fArialReg = findFontAr();

//=========================================================================================================================
//=========================================================================================================================
var docVB = doc.visibleBounds;

var left = docVB[0];
var top = docVB[1];
var right = docVB[2];
var bottom = docVB[3];
var weidth = right - left;
var Heigth = top - bottom;

var w1 = weidth / mm;
var ww = Math.round(w1 / 10) * 10;
var ww = ww * mm;

var h1 = Heigth / mm
var hh = Math.round(h1 / 10) * 10
var hh = hh * mm

var pathRef = doc.pathItems.rectangle(top + (15 * mm), left - (15 * mm), ww + (30 * mm), hh + (30 * mm));
pathRef.strokeColor = noColor;
pathRef.fillColor = noColor;
var docV = pathRef.visibleBounds;

var left = docV[0];
var top = docV[1];
var right = docV[2];
var bottom = docV[3];
var weidth = right - left;
var Heigth = top - bottom;

//==========================================================================================================================
//==========================================================  DATA  ========================================================

function formatDate(date) {
    var dd = date.getDate();
    if (dd < 10) dd = '0' + dd;
    var mm = date.getMonth() + 1;
    if (mm < 10) mm = '0' + mm;
    var yy = date.getFullYear();
    return dd + '-' + mm + '-' + yy;
}

var d = new Date(); // 30 Янв 2014

//=========================================================================================================================
//=======================================================  Snake_Name  ====================================================
var oKname = doc.groupItems.add();
oKname.name = "Work Name";

var b = app.activeDocument.name




    function stringToarray(b) {  //  Переобразование в массив и удаление 1 и 2 и последнего ел. массива

       return str.split("_")//.slice(0, 2);

    }
    var arr = stringToarray(b);

    var startName = arr.slice(0, 2)
    var endName = arr.splice(-1, 2)

    var arrS = startName.toString(); //  Переобразование массива в строку
    var arrE = endName.toString(); //  Переобразование массива в строку

    function replaceAll(find, replace, arr) { // Функция с поиском разделителя
        while (arr.indexOf(find) > -1) {
            arr = arr.replace(find, replace);
        }
        return arr;
    }

    var bn = replaceAll(',', '  /  ', arrS); // Замена запятих на '  /  '
    var bn2 = replaceAll(',', '  /  ', arrE);



//=========================================================================================================================
//=======================================================   Текст Подпис   ================================================
// Текст названия
var okNz = oKname.textFrames.add()
okNz.textRange.size = 5;
okNz.position = [right - mm, bottom + (2.6 * mm)];
okNz.contents = bn + '  /  '+ formatDate(d) + '  /  ' + bn2 ;
okNz.filled = true;
okNz.textRange.fillColor = newblack;
okNz.textRange.justification = Justification.RIGHT;

//=========================================================================================================================
//=======================================================  CharacterSTYLE  ================================================
//=========================================================================================================================
var charStyleR = doc.characterStyles.removeAll();
var charStyleData = doc.characterStyles.add("Data");
var charAttrData = charStyleData.characterAttributes;
charAttrData.size = 5;
charAttrData.textFont = fArialReg
charAttrData.fillColor = newblack
// apply to each textFrame in the document
charStyleData.applyTo(okNz.textRange);

pathRef.remove();
 alert (app.activeDocument.name)
  alert (b)
 

Dmitri_J

Участник
Топикстартер
Сообщения
51
Реакции
0
0001_Клиент_название_инфа1_инфа2_инфа3_мат
Скрипт берет с названия файла номер и Клиента и с конца названия файла Мат ну и актуальная дата
если есть вараинты сделать какую-то часть кода проще буду очень благодарен за помощь и подсказку
ну и конечно же за помощь в решение проблемы почему вставляет подпись с предидущего файла
 
Последнее редактирование:

Gad

Участник
Сообщения
1 970
Реакции
873
Попробуйте обернуть код в функцию
 

Gad

Участник
Сообщения
1 970
Реакции
873
А вообще и так вроде работает, только function stringToarray(b) заменил на function stringToarray(str)
 

Dmitri_J

Участник
Топикстартер
Сообщения
51
Реакции
0
Вроде как получилось поправить так что бы имя файла брало правильное но все же если есть возможность поправить код что б более грамотно было буду очень благодарен

добалю поправленый код

JavaScript:
var doc = app.activeDocument;
var mm = 2.834645

//=========================================================================================================================
// ========================================================  COLORS  ======================================================
var newblack = new CMYKColor;
newblack.black = 100;

var noColor = new NoColor();

//=========================================================================================================================
//==========================================================  FONT  =======================================================
function findFontAr() {

    for (i = 0; i < app.textFonts.length - 1; i++) {
        if (app.textFonts[i].name == "MyriadPro-Semibold") { return (app.textFonts[i]) }
    }
    alert('Нету')
    return (null);
}
var fArialReg = findFontAr();

//=========================================================================================================================
//=========================================================================================================================
var docVB = doc.visibleBounds;

var left = docVB[0];
var top = docVB[1];
var right = docVB[2];
var bottom = docVB[3];
var weidth = right - left;
var Heigth = top - bottom;

var w1 = weidth / mm;
var ww = Math.round(w1 / 10) * 10;
var ww = ww * mm;

var h1 = Heigth / mm
var hh = Math.round(h1 / 10) * 10
var hh = hh * mm

var pathRef = doc.pathItems.rectangle(top + (15 * mm), left - (15 * mm), ww + (30 * mm), hh + (30 * mm));
pathRef.strokeColor = noColor;
pathRef.fillColor = noColor;
var docV = pathRef.visibleBounds;

var left = docV[0];
var top = docV[1];
var right = docV[2];
var bottom = docV[3];
var weidth = right - left;
var Heigth = top - bottom;

//==========================================================================================================================
//==========================================================  DATA  ========================================================

function formatDate(date) {
    var dd = date.getDate();
    if (dd < 10) dd = '0' + dd;
    var mm = date.getMonth() + 1;
    if (mm < 10) mm = '0' + mm;
    var yy = date.getFullYear();
    return dd + '-' + mm + '-' + yy;
}

var d = new Date(); // 30 Янв 2014

//=========================================================================================================================
//=======================================================  Snake_Name  ====================================================
var oKname = doc.groupItems.add();
oKname.name = "Work Name";

var b = app.activeDocument.name.slice(0, -4);  // Название файла с подрезаным расширением (.pdf)
var str = b;



function stringToarray(str) {  //  Переобразование в массив и удаление 1 и 2 и последнего ел. массива

    return str.split("_")

}
var arr = stringToarray(b);

var startName = arr.slice(0, 2)
var endName = arr.splice(-1, 2)

var arrS = startName.toString(); //  Переобразование массива в строку
var arrE = endName.toString(); //  Переобразование массива в строку

function replaceAll(find, replace, arr) { // Функция с поиском разделителя
    while (arr.indexOf(find) > -1) {
        arr = arr.replace(find, replace);
    }
    return arr;
}

var bn = replaceAll(',', '  /  ', arrS); // Замена запятих на '  /  '
var bn2 = replaceAll(',', '  /  ', arrE);



//=========================================================================================================================
//=======================================================   Текст Подпис   ================================================
// Текст названия
var okNz = oKname.textFrames.add()
okNz.textRange.size = 5;
okNz.position = [right - mm, bottom + (2.6 * mm)];
okNz.contents = bn + '  /  ' + formatDate(d) + '  /  ' + bn2;
okNz.filled = true;
okNz.textRange.fillColor = newblack;
okNz.textRange.justification = Justification.RIGHT;

//=========================================================================================================================
//=======================================================  CharacterSTYLE  ================================================
//=========================================================================================================================
var charStyleR = doc.characterStyles.removeAll();
var charStyleData = doc.characterStyles.add("Data");
var charAttrData = charStyleData.characterAttributes;
charAttrData.size = 5;
charAttrData.textFont = fArialReg
charAttrData.fillColor = newblack
// apply to each textFrame in the document
charStyleData.applyTo(okNz.textRange);

pathRef.remove();
//alert(app.activeDocument.name)
//alert(b)
 

Gad

Участник
Сообщения
1 970
Реакции
873
JavaScript:
var doc = app.activeDocument;
function getSignature() {
    var arrName = new Array()
    arrName = doc.name.slice( 0, doc.name.lastIndexOf( '.' )).split("_")
    nowDate = new Date()
    myDate = nowDate.getDate()+"-"+(nowDate.getMonth()+1)+"-"+nowDate.getFullYear();
    return arrName[0]+" / "+arrName[1]+" / "+myDate+" / "+arrName[arrName.length - 1]
}
alert(getSignature())
 

Gad

Участник
Сообщения
1 970
Реакции
873
А, да... дата же в формате 2 цифры нужна... тогда так:
JavaScript:
var doc = app.activeDocument;
function getSignature() {
    var arrName = new Array()
    arrName = doc.name.slice( 0, doc.name.lastIndexOf( '.' )).split("_")
    nowDate = new Date()
    myDate = ("0"+nowDate.getDate()).slice(-2)+"-"+("0"+(nowDate.getMonth()+1)).slice(-2)+"-"+nowDate.getFullYear();
    return arrName[0]+" / "+arrName[1]+" / "+myDate+" / "+arrName[arrName.length - 1]
}
alert(getSignature())
 
  • Спасибо
Реакции: Dmitri_J

Gad

Участник
Сообщения
1 970
Реакции
873
Если честно то пол года назад пробовал через getByName но так и не получилось по єтому пользую таким методом

угу... у меня работает...
JavaScript:
function findFontAr() {
    try {
    return app.textFonts.getByName("MyriadPro-Semibold")
    }
    catch (e) {
    alert ("Нету")
    return (null)
    }
};
alert(findFontAr())
 
  • Спасибо
Реакции: Dmitri_J

Dmitri_J

Участник
Топикстартер
Сообщения
51
Реакции
0
Все работает
Благодарю за помощь !