Skip to main content
Participant
August 27, 2024
Question

I want to replace the first 6 characters of the file name with other text on the page.

  • August 27, 2024
  • 1 reply
  • 506 views

Hello, I have the following code. This code replaces the places in the document that say "<Name>" with the document name ai. I want this code to only take the 6 characters in the file name. Can anyone help me?

 

//#Illustrator

/*
  PageIndexer.jsx for Adobe Illustrator
  Description: numbering pages or artboards, displaying the file name, and incorporating the current date.
  Date: July, 2023
  Author: Katja Bjerrum, email: katja@productivista.com , www.productivista.com
  ============================================================================
  NOTICE:
  This script is provided "as is" without warranty of any kind.
  Free to use, not for sale.
  ============================================================================
  Released under the MIT license.
  http://opensource.org/licenses/mit-license.php
  ============================================================================
  Please contact me if you need some help or customization of this script
  at katja@productivista.com
*/

var doc = app.activeDocument;
app.coordinateSystem = CoordinateSystem.DOCUMENTCOORDINATESYSTEM;
var sel = app.activeDocument.selection;
//var lay = doc.layers.getByName('Index');

var ab = doc.artboards;
var dateArr = ['<wd>', '<dd>', '<mm>', '<yyyy>', ' <yy>', '<WD>', '<DD>', '<MM>', '<YYYY>', '<YY>'];
var nameArr = ['<name>', '<nameex>', '<NAME>', '<NAMEEX>'];
var pageArr = ['<p>', '<ps>', '<P>', '<PS>'];


var languageMappings = {
    'LanguageType.ENGLISH': {
        'Month': ['January', 'February', 'March', 'April',
            'May', 'June', 'July', 'August',
            'September', 'October', 'November', 'December'],

        'WeekDay': ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']
    },
    'LanguageType.RUSSIAN': {
        'Month': ['января', 'февраля', 'марта', 'апреля',
            'мая', 'июня', 'июля', 'августа',
            'сентября', 'октября', 'ноября', 'декабря'],
        'WeekDay': ['Воскресенье', 'Понедельник', 'Вторник', 'Среда', 'Четверг', 'Пятница', 'Суббота']
    },
    'LanguageType.BULGARIAN': {
        'Month': ['Януари', 'Февруари', 'Март', 'Април', 'Май', 'Юни', 'Юли', 'Август', 'Септември', 'Октомври', 'Ноември', 'Декември'],
        'WeekDay': ['Неделя', 'Понеделник', 'Вторник', 'Сряда', 'Четвъртък', 'Петък', 'Събота']
    },
    'LanguageType.CROATIAN': {
        'Month': ['siječnja', 'veljače', 'ožujka', 'travnja', 'svibnja', 'lipnja', 'srpnja', 'kolovoza', 'rujna', 'listopada', 'studenog', 'prosinca'],
        'WeekDay': ['Nedjelja', 'Ponedjeljak', 'Utorak', 'Srijeda', 'Četvrtak', 'Petak', 'Subota']
    },
    'LanguageType.CZECH': {
        'Month': ['Leden', 'Únor', 'Březen', 'Duben',
            'Květen', 'Červen', 'Červenec', 'Srpen',
            'Září', 'Říjen', 'Listopad', 'Prosinec'],
        'WeekDay': ['Neděle', 'Pondělí', 'Úterý', 'Středa', 'Čtvrtek', 'Pátek', 'Sobota']
    },
    'LanguageType.DANISH': {
        'Month': ['Januar', 'Februar', 'Marts', 'April',
            'Maj', 'Juni', 'Juli', 'August',
            'September', 'Oktober', 'November', 'December'],
        'WeekDay': ['Søndag', 'Mandag', 'Tirsdag', 'Onsdag', 'Torsdag', 'Fredag', 'Lørdag']
    },
    'LanguageType.DUTCH': {
        'Month': ['Januari', 'Februari', 'Maart', 'April',
            'Mei', 'Juni', 'Juli', 'Augustus',
            'September', 'Oktober', 'November', 'December'],
        'WeekDay': ['Zondag', 'Maandag', 'Dinsdag', 'Woensdag', 'Donderdag', 'Vrijdag', 'Zaterdag']
    },
    'LanguageType.ESTONIAN': {
        'Month': ['Jaanuar', 'Veebruar', 'Märts', 'Aprill',
            'Mai', 'Juuni', 'Juuli', 'August',
            'September', 'Oktoober', 'November', 'Detsember'],
        'WeekDay': ['Pühapäev', 'Esmaspäev', 'Teisipäev', 'Kolmapäev', 'Neljapäev', 'Reede', 'Laupäev']
    },
    'LanguageType.FINNISH': {
        'Month': ['Tammikuu', 'Helmikuu', 'Maaliskuu', 'Huhtikuu',
            'Toukokuu', 'Kesäkuu', 'Heinäkuu', 'Elokuu',
            'Syyskuu', 'Lokakuu', 'Marraskuu', 'Joulukuu'],
        'WeekDay': ['Sunnuntai', 'Maanantai', 'Tiistai', 'Keskiviikko', 'Torstai', 'Perjantai', 'Lauantai']
    },
    'LanguageType.FRENCH': {
        'Month': ['Janvier', 'Février', 'Mars', 'Avril',
            'Mai', 'Juin', 'Juillet', 'Août',
            'Septembre', 'Octobre', 'Novembre', 'Décembre'],
        'WeekDay': ['Dimanche', 'Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi']
    },
    'LanguageType.GERMAN': {
        'Month': ['Januar', 'Februar', 'März', 'April',
            'Mai', 'Juni', 'Juli', 'August',
            'September', 'Oktober', 'November', 'Dezember'],
        'WeekDay': ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag']
    },
    'LanguageType.GREEK': {
        'Month': ['Ιανουάριος', 'Φεβρουάριος', 'Μάρτιος', 'Απρίλιος',
            'Μάιος', 'Ιούνιος', 'Ιούλιος', 'Αύγουστος',
            'Σεπτέμβριος', 'Οκτώβριος', 'Νοέμβριος', 'Δεκέμβριος'],
        'WeekDay': ['Κυριακή', 'Δευτέρα', 'Τρίτη', 'Τετάρτη', 'Πέμπτη', 'Παρασκευή', 'Σάββατο']
    },
    'LanguageType.ITALIAN': {
        'Month': ['Gennaio', 'Febbraio', 'Marzo', 'Aprile',
            'Maggio', 'Giugno', 'Luglio', 'Agosto',
            'Settembre', 'Ottobre', 'Novembre', 'Dicembre'],
        'WeekDay': ['Domenica', 'Lunedì', 'Martedì', 'Mercoledì', 'Giovedì', 'Venerdì', 'Sabato']
    },
    'LanguageType.LATVIAN': {
        'Month': ['Janvāris', 'Februāris', 'Marts', 'Aprīlis',
            'Maijs', 'Jūnijs', 'Jūlijs', 'Augusts',
            'Septembris', 'Oktobris', 'Novembris', 'Decembris'],
        'WeekDay': ['Svētdiena', 'Pirmdiena', 'Otrdiena', 'Trešdiena', 'Ceturtdiena', 'Piektdiena', 'Sestdiena']
    },
    'LanguageType.LITHUANIAN': {
        'Month': ['Sausis', 'Vasaris', 'Kovas', 'Balandis',
            'Gegužė', 'Birželis', 'Liepa', 'Rugpjūtis',
            'Rugsėjis', 'Spalis', 'Lapkritis', 'Gruodis'],
        'WeekDay': ['Sekmadienis', 'Pirmadienis', 'Antradienis', 'Trečiadienis', 'Ketvirtadienis', 'Penktadienis', 'Šeštadienis']
    },
    'LanguageType.NORWEGIAN': {
        'Month': ['Januar', 'Februar', 'Mars', 'April',
            'Mai', 'Juni', 'Juli', 'August',
            'September', 'Oktober', 'November', 'Desember'],
        'WeekDay': ['Søndag', 'Mandag', 'Tirsdag', 'Onsdag', 'Torsdag', 'Fredag', 'Lørdag']
    },
    'LanguageType.POLISH': {
        'Month': ['stycznia', 'lutego', 'marca', 'kwietnia', 'maja', 'czerwca', 'lipca', 'sierpnia', 'września', 'października', 'listopada', 'grudnia'],
        'WeekDay': ['Niedziela', 'Poniedziałek', 'Wtorek', 'Środa', 'Czwartek', 'Piątek', 'Sobota']
    },
    'LanguageType.PORTUGUESE': {
        'Month': ['Janeiro', 'Fevereiro', 'Março', 'Abril',
            'Maio', 'Junho', 'Julho', 'Agosto',
            'Setembro', 'Outubro', 'Novembro', 'Dezembro'],
        'WeekDay': ['Domingo', 'Segunda-feira', 'Terça-feira', 'Quarta-feira', 'Quinta-feira', 'Sexta-feira', 'Sábado']
    },
    'LanguageType.ROMANIAN': {
        'Month': ['Ianuarie', 'Februarie', 'Martie', 'Aprilie',
            'Mai', 'Iunie', 'Iulie', 'August',
            'Septembrie', 'Octombrie', 'Noiembrie', 'Decembrie'],
        'WeekDay': ['Duminică', 'Luni', 'Marți', 'Miercuri', 'Joi', 'Vineri', 'Sâmbătă']
    },
    'LanguageType.SLOVAK': {
        'Month': ['januára', 'februára', 'marca', 'apríla', 'mája', 'júna', 'júla', 'augusta', 'septembra', 'októbra', 'novembra', 'decembra'],
        'WeekDay': ['Nedeľa', 'Pondelok', 'Utorok', 'Streda', 'Štvrtok', 'Piatok', 'Sobota']
    },
    'LanguageType.SPANISH': {
        'Month': ['Enero', 'Febrero', 'Marzo', 'Abril',
            'Mayo', 'Junio', 'Julio', 'Agosto',
            'Septiembre', 'Octubre', 'Noviembre', 'Diciembre'],
        'WeekDay': ['Domingo', 'Lunes', 'Martes', 'Miércoles', 'Jueves', 'Viernes', 'Sábado']
    },
    'LanguageType.SWEDISH': {
        'Month': ['Januari', 'Februari', 'Mars', 'April',
            'Maj', 'Juni', 'Juli', 'Augusti',
            'September', 'Oktober', 'November', 'December'],
        'WeekDay': ['Söndag', 'Måndag', 'Tisdag', 'Onsdag', 'Torsdag', 'Fredag', 'Lördag']
    },
    'LanguageType.UKRANIAN': {
        'Month': ['січня', 'лютого', 'березня', 'квітня', 'травня', 'червня', 'липня', 'серпня', 'вересня', 'жовтня', 'листопада', 'грудня'],
        'WeekDay': ['Неділя', 'Понеділок', 'Вівторок', 'Середа', 'Четвер', 'Пʼятниця', 'Субота']
    }
};

var itemsDict = pushItems(doc.pageItems);

for (var j = 0; j < itemsDict['Page Nr'].length; j++) {
    var myItem = itemsDict['Page Nr'][j]//.getByName(pageNrName);
    if (myItem.typename == 'TextFrame') {
        displayPageNumbersTxt(myItem);
    } else if (myItem.typename == 'GroupItem') {
        displayPageNumbersGroup(myItem);
    }

}

for (var j = 0; j < itemsDict['Doc Name'].length; j++) {
    var myItem = itemsDict['Doc Name'][j];
    if (myItem.typename == 'TextFrame') {
        displayDocNameTxt(myItem);
    } else if (myItem.typename == 'GroupItem') {
        displayDocNameGr(myItem);
    }
}
for (var j = 0; j < itemsDict['Date'].length; j++) {
    var myItem = itemsDict['Date'][j];
    if (myItem.typename == 'TextFrame') {
        displayDateTxt(myItem);
    } else if (myItem.typename == 'GroupItem') {
        displayDateGr(myItem);
    }
}

function displayDateTxt(myItem) {
    var paragraph = myItem.textRange.paragraphs[0]//.paragraph.language;
    var language = paragraph.language;
    var DateArr = getDate(language);
    var startPoint = getStartPoint(doc.artboards[0], myItem);//[pointX[0], pointY[0]];
    var myDir = getDir(myItem, startPoint);
    var ABlength = doc.artboards.length; // number of artboards
    if(DateArr[0] < 9){
        var dayDig = parseInt(DateArr[0], 10);
        
    }else{
        var dayDig = DateArr[0];   
    };
    if(DateArr[1] < 9){
        var monthDig = parseInt(DateArr[1], 10);
    }else{
        var monthDig = DateArr[1];
    };
    var monthLat = ["I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX", "X", "XI", "XII"];
    for (var l = 0; l < monthLat.length; l++){
        if(DateArr[1] == l + 1){
            var latDig = monthLat[l];
        }
    }
    
    var inputString = myItem.contents;
    var content = inputString.replace(/<DD>/g, '<dd>').replace(/<MM>/g, '<mm>').replace(/<YY>/g, '<yy>').replace(/<YYYY>/g, '<yyyy>').replace(/<MONTH>/g, '<month>').replace(/<WD>/g, '<wd>').replace(/<D>/g, '<d>').replace(/<M>/g, '<m>').replace(/<LM>/g, '<lm>');
    var finalContent = content.replace(/<dd>/g, DateArr[0]).replace(/<d>/g, dayDig).replace(/<m>/g, monthDig).replace(/<mm>/g, DateArr[1]).replace(/<lm>/g, latDig).replace(/<yy>/g, DateArr[4]).replace(/<yyyy>/g, DateArr[2]).replace(/<month>/g, DateArr[3]).replace(/<wd>/g, DateArr[5]);
    var textArr = [];
    for (i = 0; i < ABlength; i++) {
        var itext = myItem.duplicate();
        itext.contents = finalContent;
        itext.name = itext.name + [i + 1]
        textArr.push(itext);
    }
    for (i = 0; i < textArr.length; i++) {
        var newCoord = getCoordsfromBorder(textArr[i], startPoint, doc.artboards[i], myDir);
        textArr[i].position = newCoord;
    }
    myItem.remove();
};

function displayPageNumbersTxt(myItem) {

    var ABlength = doc.artboards.length; 
    var startPoint = getStartPoint(doc.artboards[0], myItem);
    var inputString = myItem.contents;
    var myDir = getDir(myItem, startPoint);
    var textArr = [];
    for (i = 0; i < ABlength; i++) {
        if(i < 9){
            var pageDig = '0' + [i + 1];
            
            
        }else{
            var pageDig  = [i + 1];  
            
        };
        if(ABlength < 9){
            
            var pagesDig = '0' + ABlength;
            
        }else{
           
            var pagesDig = ABlength; 
        };
        var newContent = inputString.replace(/<p>/g, i + 1).replace(/<P>/g, i + 1).replace(/<PP>/g, pageDig).replace(/<pP>/g, pageDig).replace(/<Pp>/g, pageDig).replace(/<pp>/g, pageDig);
        var finalContent = newContent.replace(/<ps>/g, ABlength).replace(/<PS>/g, ABlength).replace(/<Ps>/g, ABlength).replace(/<pS>/g, ABlength).replace(/<ppS>/g, pagesDig).replace(/<pPS>/g, pagesDig).replace(/<PPS>/g, pagesDig).replace(/<PpS>/g, pagesDig).replace(/<PPs>/g, pagesDig).replace(/<Pps>/g, pagesDig).replace(/<pps>/g, pagesDig);
        var itext = myItem.duplicate()
        itext.contents = finalContent;
        itext.name = itext.name + [i + 1]
        textArr.push(itext);
    }
    for (i = 0; i < textArr.length; i++) {
        var newCoord = getCoordsfromBorder(textArr[i], startPoint, doc.artboards[i], myDir);
        textArr[i].position = newCoord;
    }
    myItem.remove();
};

function displayDocNameTxt(myItem) {
    var ABlength = doc.artboards.length; 
    var startPoint = getStartPoint(doc.artboards[0], myItem);
    var myDir = getDir(myItem, startPoint);
    var textArr = [];
    var inputString = myItem.contents;
    var filenameEx = app.activeDocument.name;
    var fileName = filenameEx.split('.').slice(0, -1).join('.');
    var content = inputString.replace(/<Name>/g, '<name>').replace(/<NAME>/g, '<name>').replace(/<NAme>/g, '<name>').replace(/<nAme>/g, '<name>').replace(/<naMe>/g, '<name>');
    var finalContent = content.replace(/<name>/g, fileName).replace(/<nameex>/g, filenameEx);
    myItem.contents = finalContent;

    for (i = 0; i < ABlength; i++) {
        var itext = myItem.duplicate();
        itext.contents = finalContent;
        itext.name = itext.name + [i + 1]
        textArr.push(itext);
    }
    for (i = 0; i < textArr.length; i++) {
        var newCoord = getCoordsfromBorder(textArr[i], startPoint, doc.artboards[i], myDir);
        textArr[i].position = newCoord;
    }
    myItem.remove();
};

function displayDateGr(myItem) {

    var ABlength = doc.artboards.length;
    var startPoint = getStartPoint(doc.artboards[0], myItem);
    var myDir = getDir(myItem, startPoint);
    
    for (i = 0; i < ABlength; i++) {
        var dupple = myItem.duplicate();
        
       
        var itemsArr = find_items(dupple, textInFrame);
        var inputString = myItem.contents;
        for (var j = 0; j < itemsArr.length; j++) {
            var language = itemsArr[j].textRange.paragraphs[0].language;

            var DateArr = getDate(language);
            if(DateArr[0] < 9){
                var dayDig = parseInt(DateArr[0], 10);
                
            }else{
                var dayDig = DateArr[0];   
            };
            if(DateArr[1] < 9){
                var monthDig = parseInt(DateArr[1], 10);
            }else{
                var monthDig = DateArr[1];
            };
            var monthLat = ["I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX", "X", "XI", "XII"];
            for (var l = 0; l < monthLat.length; l++){
                if(DateArr[1] == l + 1){
                    var latDig = monthLat[l];
                }
            }
            var inputString = itemsArr[j].contents;
            var content = inputString.replace(/<DD>/g, '<dd>').replace(/<MM>/g, '<mm>').replace(/<YY>/g, '<yy>').replace(/<YYYY>/g, '<yyyy>').replace(/<MONTH>/g, '<month>').replace(/<WD>/g, '<wd>').replace(/<D>/g, '<d>').replace(/<M>/g, '<m>').replace(/<LM>/g, '<lm>');
    var finalContent = content.replace(/<dd>/g, DateArr[0]).replace(/<d>/g, dayDig).replace(/<m>/g, monthDig).replace(/<mm>/g, DateArr[1]).replace(/<lm>/g, latDig).replace(/<yy>/g, DateArr[4]).replace(/<yyyy>/g, DateArr[2]).replace(/<month>/g, DateArr[3]).replace(/<wd>/g, DateArr[5]);
            itemsArr[j].contents = finalContent;

        }
        dupple.position = getCoordsfromBorder(dupple, startPoint, doc.artboards[i], myDir);
        dupple.name = myItem.name + [i + 1];
    }
    myItem.remove();
};

function displayDocNameGr(myItem) {
    var ABlength = doc.artboards.length;
    var startPoint = getStartPoint(doc.artboards[0], myItem);
    var myDir = getDir(myItem, startPoint);

    for (i = 0; i < ABlength; i++) {
        var dupple = myItem.duplicate();
        
        
        var itemsArr = find_items(dupple, textInFrame);

        for (var j = 0; j < itemsArr.length; j++) {
            var inputString = itemsArr[j].contents;
            var filenameEx = app.activeDocument.name;
            var fileName = filenameEx.split('.').slice(0, -1).join('.');
            var content = inputString.replace(/<Name>/g, '<name>').replace(/<NAME>/g, '<name>').replace(/<NAme>/g, '<name>').replace(/<nAme>/g, '<name>').replace(/<naMe>/g, '<name>');
            var finalContent = content.replace(/<name>/g, fileName).replace(/<nameex>/g, filenameEx);
            itemsArr[j].contents = finalContent;
        }
        
        dupple.position = getCoordsfromBorder(dupple, startPoint, doc.artboards[i], myDir);
        dupple.name = myItem.name + [i + 1];
    }
    myItem.remove();
};

function displayPageNumbersGroup(myItem) {

    var ABlength = doc.artboards.length;
    var startPoint = getStartPoint(doc.artboards[0], myItem);
    var myDir = getDir(myItem, startPoint);
    for (i = 0; i < ABlength; i++) {
        var dupple = myItem.duplicate()
        var itemsArr = find_items(dupple, textInFrame);
            if(i < 9){
                var pageNr = '0' + (i+1); 
               
            }else{var pageNr = i+1; }
        for (var j = 0; j < itemsArr.length; j++) {
            var inputString = itemsArr[j].contents;
            
            
            var content = inputString.replace(/<P>/g, '<p>').replace(/<PS>/g, '<ps>').replace(/<Ps>/g, '<ps>').replace(/<pS>/g, '<ps>');
            var newContent = content.replace(/<p>/g, i + 1).replace(/<pp>/g, pageNr).replace(/<ps>/g, ABlength);
            itemsArr[j].contents = newContent;
        }
        dupple.position = getCoordsfromBorder(dupple, startPoint, doc.artboards[i], myDir);
        dupple.name = myItem.name + [i + 1];
    }

    myItem.remove();
};




function ItemsNewPos(myArtboard, oldpos, new_coord) {
    var rect = myArtboard.artboardRect;
    var x_ori = rect[0];
    var y_ori = rect[1];
    var newPos = [oldpos[0] - x_ori + new_coord[0], oldpos[1] - y_ori + new_coord[1]];

    return newPos;

}

function getDate(Language) {
    var today = new Date();
    var date = today.getDate();
    var month = today.getMonth() + 1;
    if (date < 10) { date = "0" + today.getDate() } else { date = today.getDate() };
    if (month < 10) { month = "0" + (today.getMonth() + 1) } else { month = (today.getMonth() + 1) };
    var monthDays = languageMappings[Language];
    if (!monthDays) {
        monthDays = languageMappings[LanguageType.ENGLISH];
    }
    var monthNames = monthDays['Month'];
    var weekdayNames = monthDays['WeekDay'];

    var currentDay = new Date().getDay();
    var weekdayName = weekdayNames[currentDay];
    var currentMonth = new Date().getMonth();
    var monthName = monthNames[currentMonth];

    var fullYear = today.getFullYear();
    var lastTwoDigits = fullYear % 100;
    return [date, month, today.getFullYear(), monthName, lastTwoDigits, weekdayName];

};

function findRegex(inputString, regex) {
    var matches = inputString.match(regex);
    if (matches) {

        return matches;
    }
    
    return null;
};

function pushItems(items) {
    
    var itemsNamesDict = {
        'Page Nr': [],
        'Doc Name': [],
        'Date': []
    }

    for (var i = 0; i < items.length; i++) {
        var itemName = capitalize(items[i].name);
       
        if (itemsNamesDict.hasOwnProperty(itemName)) {
            itemsNamesDict[itemName].push(items[i]);
        }
    }

    return itemsNamesDict;
};

function capitalize(str) {
    //Capitalaze first letters
    return str.replace(/\b\w/g, function (l) {
        return l.toUpperCase();
    });
};


function find_items(myItem, collect_function) {
    function return_all(myItem, arr) {
        arr.push(myItem)
        return arr
    }
    if (typeof collect_function == 'undefined') {
        collect_function = return_all
    }

    var arr = [];

    return find_items_recursive(myItem, arr, collect_function)
};


function find_items_recursive(myItem, arr, collect_function) {

    if (myItem.typename == "GroupItem") {
        for (var i = 0; i < myItem.pageItems.length; i++) {
            var arr = find_items_recursive(myItem.pageItems[i], arr, collect_function);
        }
    }
    else if (myItem.typename == "PageItems") {
        for (var i = 0; i < myItem.length; i++) {
            var arr = find_items_recursive(myItem[i], arr, collect_function);
        }
    }
    else {
        var arr = collect_function(myItem, arr)
    }

    return arr;
};

//coords skal være defñ®†
function textInFrame(myItem, arr) {
    if (myItem.typename == "TextFrame") { // {

        arr.push(myItem);
    }
    return arr
};

function getDir(myItem, startPoint) {
    var bounds = myItem.geometricBounds;

    if (startPoint['coord'][0] == bounds[0] && startPoint['coord'][1] == bounds[1]) {
        var dir = 'TL';
    } else if (startPoint['coord'][0] == bounds[0] && startPoint['coord'][1] == bounds[3]) {
        var dir = 'BL';
    } else if (startPoint['coord'][0] == bounds[2] && startPoint['coord'][1] == bounds[1]) {
        var dir = 'TR';
    } else if (startPoint['coord'][0] == bounds[2] && startPoint['coord'][1] == bounds[3]) {
        var dir = 'BR';
    } else {
        var dir = 'TL';
    }


    return dir;
}



function getCoordsfromBorder(myItem, startPoint, AB, dir) {
   
    var ABrect = AB.artboardRect;

    if (dir == 'TL') {
        if (myItem.typename == 'TextFrame') {
           
            var startCoord = [ABrect[0] + startPoint['dist'][0], ABrect[1] - startPoint['dist'][1]];

        } else {
            var startCoord = [ABrect[0] + startPoint['dist'][0], ABrect[1] - startPoint['dist'][1]];
        }
    } else if (dir == 'BL') {

        //       alert('BL')
        if (myItem.typename == 'TextFrame') {
           
            var startCoord = [ABrect[0] + startPoint['dist'][0], ABrect[3] + startPoint['dist'][1] + myItem.height];

        } else {
            var startCoord = [ABrect[0] + startPoint['dist'][0], ABrect[3] + startPoint['dist'][1] + myItem.height];
        }
    } else if (dir == 'TR') {
        //alert('TR')

        if (myItem.typename == 'TextFrame') {

            var startCoord = [ABrect[2] - startPoint['dist'][0] - myItem.width, ABrect[1] - startPoint['dist'][1]];

        } else {
            
            var startCoord = [ABrect[2] - startPoint['dist'][0] - myItem.width, ABrect[1] - startPoint['dist'][1]];
        }
    } else if (dir == 'BR') {
        //alert('BR')
        if (myItem.typename == 'TextFrame') {

            var startCoord = [ABrect[2] - startPoint['dist'][0] - myItem.width, ABrect[3] + startPoint['dist'][1] + myItem.height];

        } else {
            var startCoord = [ABrect[2] - startPoint['dist'][0] - myItem.width, ABrect[3] + startPoint['dist'][1] + myItem.height];
        }
    }

    return startCoord
}


function minstDist(coord1, arr) {
    //Finds min distance from point and array, push points and distance in an array
    var minDist = 1e16;
    for (var i = 0; i < arr.length; i++) {
        var coord2 = arr[i];
        var curDist = findDist(coord1, coord2);
        if (curDist < minDist) {

            minDist = curDist;
            var myP = coord2;
        }
    }
    return [myP, minDist];
};

function findDist(coord1, coord2) {
    //Finds distance between two items from coordinates
    if (typeof (coord1) == "number") {
        coord1 = [coord1];
    }
    if (typeof (coord2) == "number") {
        coord2 = [coord2];
    }
    var sumOfSquares = 0;
    for (var i = 0; i < coord1.length; i++) {
        var sum = (coord1[i] - coord2[i]) * (coord1[i] - coord2[i]);
        sumOfSquares += sum;
    }
    return Math.sqrt(sumOfSquares);
};

function findFinalDist(selarr, arr) {
    //Finds min distance from two arrays, push points and distance in an array
    var minDist = 1e16;
    for (var i = 0; i < selarr.length; i++) {
        var coord1 = selarr[i];
        var newDistArr = minstDist(coord1, arr);
        if (newDistArr[1] < minDist) {
            minDist = newDistArr[1];
            var myP1 = coord1;
            var myP2 = newDistArr[0];
        }
    }
    return [myP1, myP2, minDist];
};

function getStartPoint(AB, myItem) {

    var ABrect = AB.artboardRect;
    var abArrX = [ABrect[0], ABrect[2]];
    var abArrY = [ABrect[1], ABrect[3]];

    var itemRect = myItem.geometricBounds;//textFrame.geometricBounds;

    var itemArrX = [itemRect[0], itemRect[2]];
    var itemArrY = [itemRect[1], itemRect[3]];
    var pointX = findFinalDist(itemArrX, abArrX);
    var pointY = findFinalDist(itemArrY, abArrY)


    return { 'coord': [pointX[0], pointY[0]], 'dist': [pointX[2], pointY[2]] };
}
This topic has been closed for replies.

1 reply

Community Expert
August 28, 2024

Not tested but try replaing the following method in your code with the one listed below

function displayDocNameTxt(myItem) {
    var ABlength = doc.artboards.length; 
    var startPoint = getStartPoint(doc.artboards[0], myItem);
    var myDir = getDir(myItem, startPoint);
    var textArr = [];
    var inputString = myItem.contents;
    var filenameEx = app.activeDocument.name;
    var fileName = filenameEx.split('.').slice(0, -1).join('.');
    var content = inputString.replace(/<Name>/g, '<name>').replace(/<NAME>/g, '<name>').replace(/<NAme>/g, '<name>').replace(/<nAme>/g, '<name>').replace(/<naMe>/g, '<name>');
    var finalContent = content.replace(/<name>/g, fileName.substring(0,6)).replace(/<nameex>/g, filenameEx);
    myItem.contents = finalContent;

    for (i = 0; i < ABlength; i++) {
        var itext = myItem.duplicate();
        itext.contents = finalContent;
        itext.name = itext.name + [i + 1]
        textArr.push(itext);
    }
    for (i = 0; i < textArr.length; i++) {
        var newCoord = getCoordsfromBorder(textArr[i], startPoint, doc.artboards[i], myDir);
        textArr[i].position = newCoord;
    }
    myItem.remove();
};

-Manan

-Manan
Participant
August 28, 2024

Hello, I added the code you gave me to the appropriate section of my code. But it still says the full name.

Community Expert
August 28, 2024

Try changing the following line in the same method

var finalContent = content.replace(/<name>/g, fileName.substring(0,6)).replace(/<nameex>/g, filenameEx);

to the following

var finalContent = content.replace(/<name>/g, fileName.substring(0,6)).replace(/<nameex>/g, filenameEx.substring(0,6));

If this also does not work then share a sample Illustrator file and I shall debug

-Manan 

-Manan