Skip to main content
Participant
Aug 27, 2024 8:10 PM UTC
Question

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

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 is closed to new replies. Start a new post to keep the conversation going.

6 replies

Community Expert
Aug 28, 2024 3:55 AM UTC

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

Translate
-Manan
Participant
Aug 28, 2024 11:37 AM UTC

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

Translate
Community Expert
Aug 28, 2024 5:08 PM UTC

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 

Translate
-Manan