[ID CS4-CS6] Скрипт для замены текста картинкой

  • Автор темы Автор темы Darvinnn
  • Дата начала Дата начала
"Не желая учиться " - это вы из чего сделали такой вывод?
У меня стоит вполне конкретная задача - сделать скрипт. Обучаться задачи не стоит.
Т. е. в переводе на простой язык - вы хотите написать скрипт без обучения, примерно как этот персонаж
118413

Задача - иметь скрипт, который заменит названия на логотипы в одно нажатие.
По сути скрипт так и делает, надо только понять логику его работы и допилить напильником. Но логика для вас непонятна,прикладывать усилия к ее пониманию вы тоже не желаете, чего ж вы тогда хотите? Это самый простой путь из всех, которые вам указали в этой теме, остальные (при вашем опыте) сильно сложнее.
 
Т. е. в переводе на простой язык - вы хотите написать скрипт без обучения, примерно как этот персонаж
Посмотреть вложение 118413

По сути скрипт так и делает, надо только понять логику его работы и допилить напильником. Но логика для вас непонятна,прикладывать усилия к ее пониманию вы тоже не желаете, чего ж вы тогда хотите? Это самый простой путь из всех, которые вам указали в этой теме, остальные (при вашем опыте) сильно сложнее.
У вас что-то с логикой... Не стоит задачи обучаться не есть нежелание обучаться. Вот в университете стоит именно задача обучаться, а не решать производственные задачи. У меня стоит задача именно решить задачу. Если для ее решения нужно чему-то обучиться, то это несложно.
По сути скрипт этого не делает. Из него нужное только это, и то, нужно понять как допилить и что лишнее:
JavaScript:
    findTextPreferences.findWhat = mySelectTagBefore.editContents + String(myFileName) + mySelectTagAfter.editContents;

        var myFindResult = myStory.findText(false);

        if (myFindResult.length > 0) {

            myFindResult.reverse();

            try {

                var myPage = activeWindow.activePage;

                var myPlacePoint = new Array(0,0)

                var myPlacedObject = myPage.place(myFiles[myCounter], myPlacePoint, undefined, false, false, true, true);

                if (myPlacedObject[0].parent.contentType == ContentType.GRAPHIC_TYPE) {

                    myObject = myPlacedObject[0].parent;

                    if (mySelectPersent.checkedState) {

                        myObject.horizontalScale = mySelectPercentValue.editValue;

                        myObject.verticalScale = mySelectPercentValue.editValue;

                    }

                    if ((mySelectHeight.checkedState) && ((myObject.visibleBounds[2] - myObject.visibleBounds[0]) > mySelectHeightValue.editContents)) {

                        var myHeigthPercent = (mySelectHeightValue.editContents * 100 / (myObject.visibleBounds[2] - myObject.visibleBounds[0]));

                        myObject.horizontalScale = myHeigthPercent;

                        myObject.verticalScale = myHeigthPercent;

                    }

                    if ((mySelectWidth.checkedState) && ((myObject.visibleBounds[3] - myObject.visibleBounds[1]) > mySelectWidthValue.editContents)) {

                        var myWidthPercent = (mySelectWidthValue.editContents * 100 / (myObject.visibleBounds[3] - myObject.visibleBounds[1]));

                        myObject.horizontalScale = myWidthPercent;

                        myObject.verticalScale = myWidthPercent;                      

                    }

                    myObject.fit(FitOptions.CONTENT_TO_FRAME);

                } else {

                    myObject = myPlacedObject.textFrames[0];

                    if ((mySelectHeight.checkedState)) {

                        var myHeigthPercent = (mySelectHeightValue.editContents * 100 / (myObject.visibleBounds[2] - myObject.visibleBounds[0]));

                    }

                    if ((mySelectWidth.checkedState)) {

                        var myWidthPercent = (mySelectWidthValue.editContents * 100 / (myObject.visibleBounds[3] - myObject.visibleBounds[1]));

                    }

                    myObject.verticalScale = myHeigthPercent;

                    myObject.horizontalScale = myWidthPercent;

                }

                myObject.select(SelectionOptions.REPLACE_WITH);

                cut();

            } catch (err) {

                myFileErrorsCount++;

                continue;

            }

            for (myCount = 0; myCount < myFindResult.length; myCount++) {

                myFindResult[myCount].select(SelectionOptions.REPLACE_WITH);

                try {

                    paste();

                } catch (err) {

                    myPlaceErrorsCount++;

                }

            }

        }

    }

    findTextPreferences = null;

    mySelObject.select(SelectionOptions.REPLACE_WITH);

    if ((myFileErrorsCount != 0) || (myPlaceErrorsCount != 0)) {

        alert(langAllDone + "\n" + String(myFileErrorsCount) + " " + langPlaceErrors + "\n" + String(myPlaceErrorsCount) + " " + langReplaceErrors);

    } else {

        alert(langAllDone);
 
Последнее редактирование модератором:
Там и логики немного - меньше ста строк начиная с 134
Цикл по всем файлам каталога, ставите именам в соответствие ваши названия каналов и делов то!
Нет, в принципе, есть еще проще путь - упросите Бутрина (он тут) поправить свой скрипт как вам надо, предложите водки ему например (пиво он кажется не пьет)
 
Там и логики немного - меньше ста строк начиная с 134
Цикл по всем файлам каталога, ставите именам в соответствие ваши названия каналов и делов то!
Нет, в принципе, есть еще проще путь - упросите Бутрина (он тут) поправить свой скрипт как вам надо, предложите водки ему например (пиво он кажется не пьет)
Скорее всего, так и сделаю ))
Пока удалось сократить до 40 строк, все лишнее поубирал. Только нифига не работает ))) Пока не работает
 
Только нифига не работает
Ну если не ругается на синтаксис это уже большой шаг вперед '))'
Что именно не работает и что поубирали? Я б, на вашем месте, ничего б не убирал, а наоборот, добавлял бы дополнительные табличные преобразования, например в строке 151
Иначе задолбаетесь
 
Бутрин конечно большой души человек. Но обязан ли он быть затычкой всякой бочки?
 
Ну если не ругается на синтаксис это уже большой шаг вперед '))'
Что именно не работает и что поубирали? Я б, на вашем месте, ничего б не убирал, а наоборот, добавлял бы дополнительные табличные преобразования, например в строке 151
Иначе задолбаетесь
Пробовал ничего не убирать, так вообще запутался ))) Там много дополнительных штук с масштабированием и тегами.
Пока отчего-то ругается на простецкую строчку
findTextPreferences.findWhat = "Первый";
говорит, что null не является объектом (

Пока все выглядит так:

var myStory = app.selection[0].parentStory;

findTextPreferences = null;

findTextPreferences.findWhat = "Первый";

var myFindResult = myStory.findText(false);

if (myFindResult.length > 0) {

myFindResult.reverse();

try {

var myPage = activeWindow.activePage;

var myPlacePoint = new Array(0,0)

var myPlacedObject = myPage.place("/C/Users/Guzel/Desktop/DAN/01.eps", myPlacePoint, undefined, false, false, true, true);



myObject = myPlacedObject.textFrames[0];



myObject.select(SelectionOptions.REPLACE_WITH);

cut();

} catch (err) {

myFileErrorsCount++;



}

for (myCount = 0; myCount < myFindResult.length; myCount++) {

myFindResult[myCount].select(SelectionOptions.REPLACE_WITH);

try {

paste();

} catch (err) {

myPlaceErrorsCount++;

}

}

}

findTextPreferences = null;

mySelObject.select(SelectionOptions.REPLACE_WITH);

if ((myFileErrorsCount != 0) || (myPlaceErrorsCount != 0)) {

alert(langAllDone + "\n" + String(myFileErrorsCount) + " " + langPlaceErrors + "\n" + String(myPlaceErrorsCount) + " " + langReplaceErrors);

} else {

alert(langAllDone);

}

myDialog.destroy();

exit();
 
Бутрин конечно большой души человек. Но обязан ли он быть затычкой всякой бочки?
Зачем так-то? Все когда-то учились, пытались сделать что-то для себя новое. Спросить не стыдно, стыдно не хотеть узнать
 

Не по теме:
Есть специальный тег

Код:
КОД!
 
  • Спасибо
Реакции: Darvinnn
говорит, что null не является объектом
Правильно ругается
findTextPreferences = null;
findTextPreferences.findWhat = "Первый";
Ибо у null нет свойства findWhat
Я еще раз выражаю сомнение в вашей способности перепилить данный скрипт вот так вот наобум 'hmmm'
 
Добрый день! Помогите пожалуйста разобраться с написанием скрипта для замены текста на картинку.
Задача - упростить верстку телепрограммы. Есть текст, где названия каналов написаны текстом (Первый, Второй, НТВ и т.д.). Есть подготовленные EPS-картинки с логотипами каналов. Так вот, нужно что бы все названия каналов заменялись логотипами.
Пока дальше схемы не продвинулся:

Вставить логотип первого канала
Вырезать объект в буфер обмена
app.findPreferences.Findtext = "Первый";
app.changePreferences.changeTo = Буфер обмена;
app.documents[0].changeText();
Повторить все то же самое для остальных каналов.

Помогите пожалуйста все это написать работающим скриптом. Спасибо!
Нужно на фрейм с программой натравить сначала скрипт FindChangeByList с заменой названий каналов на имена файлов, а потом скриптом TFManagerCS3 заменить эти имена на сами картинки...
 
  • Спасибо
Реакции: _MBK_
Правильно ругается

Ибо у null нет свойства findWhat
Я еще раз выражаю сомнение в вашей способности перепилить данный скрипт вот так вот наобум 'hmmm'
Но в исходном скрипте это ж есть. Хотя, наверное должно быть NothingEnum.nothing;
 
Пока все выглядит так, затык просиходит при попытке заменить )))
В строке mySelObject.select(SelectionOptions.REPLACE_WITH); непонятно что за mySelObject ))

Код:
//~     var myDoc = activeDocument;
    var mySelObject = selection[0];
    var myDocPref = myDoc.documentPreferences;
    var myDocViewPref = myDoc.viewPreferences;

var myFileErrorsCount = 0;
var myPlaceErrorsCount = 0;
var myStory = app.selection[0].parentStory;
app.findTextPreferences = NothingEnum.nothing;
app.findTextPreferences.findWhat = "Первый";
        var myFindResult = myStory.findText(false);
        if (myFindResult.length > 0) {
            myFindResult.reverse();
            try {
                var myPage = activeWindow.activePage;
                var myPlacePoint = new Array(0,0)
                var myPlacedObject = myPage.place("/C/Users/Guzel/Desktop/DAN/01.eps", myPlacePoint, undefined, false, false, true, true);
                
                    myObject = myPlacedObject.textFrames[0];
            
                myObject.select(SelectionOptions.REPLACE_WITH);
                cut();
            } catch (err) {
                myFileErrorsCount++;

            }
            for (myCount = 0; myCount < myFindResult.length; myCount++) {
                myFindResult[myCount].select(SelectionOptions.REPLACE_WITH);
                try {
                    paste();
                } catch (err) {
                    myPlaceErrorsCount++;
                }
            }
        }
    findTextPreferences = null;
    mySelObject.select(SelectionOptions.REPLACE_WITH);
    if ((myFileErrorsCount != 0) || (myPlaceErrorsCount != 0)) {
        alert(langAllDone + "\n" + String(myFileErrorsCount) + " " + langPlaceErrors + "\n" + String(myPlaceErrorsCount) + " " + langReplaceErrors);
    } else {
        alert(langAllDone);
    }
    myDialog.destroy();
    exit();
 
Снова те же грабли.
И все равно код выглядит безумным
До туда еще не добрался )))
Тут совсем другой путь благодаря Олегу наметился )) Намного проще

Код:
//очищаем опции поиска
app.findTextPreferences = NothingEnum.NOTHING;
app.changeTextPreferences = NothingEnum.NOTHING;
app.findTextPreferences.findWhat = "Первый";
// переменная story должна быть определена ранее, в старом скрипте есть код
var texts = story.findText(true);

for (var i = 0; i < texts.lenght; i++) {
    texts[i].place(File("/C/Users/Guzel/Desktop/DAN/01.eps"));
}

Кто такая переменная story и как ее заранее определить, вот в чем вопрос ))
 
Повторяю, программы так не пишутся от слова "совсем"
И я уже начинаю сомневаться в вашем программерском опыте как минимум на си
Вы же взяли программу Бутрина и изнасиловали пьяным жестоким ботинком
Я б на его месте обиделся и потребовал вкачестве сатисфакции как минимум хеннеси
 
Благодаря Олегу удалось сделать рабочий скрипт.
Сейчас выглядит так:
Код:
//~ var story = app.selection[0].parentStory;
var story = app.activeDocument;

var txt = ["ПЕРВЫЙ", "Россия", "ТНВ", "ТАТ24", "ТВ Центр", "НТВ", "КУЛЬТУРА", "ДОМАШНИЙ", "РЕН ТВ (Регионы)", "ТНТ (+0)", "СТС", "Пятый канал Россия", "МАТЧ!", "Общественное телевидение России (ОТР)"];
var path = ["Первый.eps", "Россия.eps", "ТНВ.eps", "Татарстан24.eps", "ТВЦ.eps", "НТВ.eps", "Культура.eps", "Домашний.eps", "Рен-ТВ.eps", "ТНТ.eps", "СТС.eps", "5 канал.eps", "Матч-ТВ.eps", "ОТР.eps"];
var path_folder = "/C/Users/Guzel/Desktop/DAN/";

for (var q = 0; q < path.length; q++) {
    path[q] = path_folder+path[q];
    // txt[q] = "\n"+txt[q]+"\n";
}

for (var w = 0; w < path.length; w++) {
     //очищаем опции поиска
    app.findTextPreferences = NothingEnum.NOTHING;
    app.changeTextPreferences = NothingEnum.NOTHING;
    app.findTextPreferences.findWhat = txt[w];
    // переменная story должна быть определена ранее, в старом скрипте есть код
    var texts = story.findText(true);
    for (var i = 0; i < texts.length; i++) {
        texts[i].place(File(path[w]));
    }

}

    alert ("Произведено " + i +" замен" );
    alert (txt);

Проблема в том, что все заменяется, но в том числе встречающиеся в тексте слова )). Раньше через замену искалось ^pНазвание канала^p.
Пытаюсь прикрутить эту конструкцию, в закомментенной строке видно:
// txt[q] = "\n"+txt[q]+"\n";
Но ничего не изменяет. Хотя переменные в массиве правильные, перевод строки плюс название канала. В чем может быть дело?