Извлечь текст из файла Illustrator любым API или скриптом?

Я работаю над проектом, в котором 1000 файлов с той же опечаткой ex. файл со словом «собаки», которое нужно превратить в «собака». эти 1000 файлов имеют ту же опечатку. Могу ли я в любом случае написать сценарий для этого в Illustrator? или какой-нибудь API, с помощью которого я могу извлечь текст из файла, затем отредактировать его (изменить «собаки» на «собаку»), а затем сохранить его обратно, потому что я не хочу открывать 1000 файлов и делать это 1000 раз.

слово "собаки" это текстовый слой?
да, он находится в текстовом слое, но вложен в другой слой.
Этот скрипт не делает именно то, что вам нужно, но если вы хотите заставить скрипт делать то, что вам нужно, он уже там на 90%: forums.adobe.com/message/10364559#10364559 . Возможно, вы могли бы сделать Действие, при котором вы запускаете сценарий, а затем запускаете его для всех ваших документов в пакетном режиме. - Должен сказать, что это первый раз, когда я вижу сценарий с диалогом «пожертвовать».

Ответы (1)

Этот скрипт найдет ключевое слово «Собаки» и заменит его на «Собака» во всех открытых документах.

    #target illustrator
    var count;
var folderRef = Folder.selectDialog ("choose Folder");
var prefix = prompt("Prefix name","");
var fileRef = folderRef + "/" + prefix;
for (count=0;count<9999;count++){
    var temp;
    if(count<10){
        temp = "000";
        }else if(count>=10 && count<100){
        temp = "00";
        }else if(count>=100 && count<1000){
        temp = "0";
        }else{
            temp = "";
            }
    var result = fileRef + " " + temp + count;
    var f = new File(result + ".ai");
    if ( f.exists ) {
        app.open( new File(f) );
for(var i = 0; i < app.documents.length; i++){    
    for(var j = 0; j < app.documents[i].textFrames.length; j++){    
        var str = app.documents[i].textFrames[j].contents;    
        var rep = str.replace ("Dogs", "Dog");
        app.documents[i].textFrames[j].contents = rep;
//justification lines
       var z = app.documents[i].textFrames[j].paragraphs[0].paragraphAttributes;
       z.justification = Justification.CENTER; 
          } 
    }
app.activeDocument.close(SaveOptions.SAVECHANGES);   //comment this lineby putting "//" before it if you wanna keep your file open after edited
    }

}

поэтому, если вы хотите заменить слово из всего открытого документа, вы можете использовать это; сохраните этот код, а ReplaceTest(orWhatever).jsxзатем поместите его в папку сценария и перезапустите Illustrator. вы найдете свой сценарий в File-Scripts.

введите описание изображения здесь

Прокомментируйте свое требование ниже для дальнейшего улучшения кода :), вы можете увидеть, как я этого добился; не забудьте прокомментировать команду закрытия, если хотите оставить файл открытым

введите описание изображения здесь

вау, большое спасибо за вашу помощь Design Phoenix, я хотел бы еще 2 улучшения, 1. Я хочу, чтобы он сообщал мне, какой документ был отредактирован, а какой нет, так как в некоторых файлах содержится слово собака, а в некоторых нет Я хотел бы получить список редактируемых файлов. 2. Могу ли я указать путь к папке и позволить автоматизировать каждый файл в этой папке, не открывая вручную 100 файлов? Я использую MacOS. Спасибо большое за Вашу поддержку
если у вас есть папка, чем вы можете сказать мне шаблон файла, например test_1 test_2 и т. д.?
Нью-Йорк 0244, Нью-Йорк 0245, Нью-Йорк 0246, Нью-Йорк 0247 Калифорния 2230, Калифорния 2231, Калифорния 2232 примерно так. большое спасибо за вашу помощь.
хорошо, если вы наберете Newyork один раз, и он отредактирует все ваши файлы с именами Newyork?
это тоже было бы здорово.
хорошо, я пытаюсь :)
Я попробовал ваш скрипт, и он работает правильно, за исключением того, что после замены текста текст отступает влево. Может ли скрипт только заменить текст, а не сделать отступ влево?
Я пробовал с обычным текстовым файлом, он отлично работает, но когда я использую его в реальном файле, он не только заменяет текст, но и делает отступ влево. Может быть, это потому, что слой текстового объекта вложен в другой объект. Есть ли способ отключить этот эффект?
не уверен, но посмотри мой отредактированный ответ
Я отредактировал свой ответ, и да, должен быть способ сохранить шрифт в центре; так ваше выравнивание шрифта меняется на левое???
@ user136301 Протестировано, и теперь мои сценарии меняют выравнивание всех текстов по центру посередине :) и извините, так как мое дежурство закончилось, поэтому, если у вас возникнут дополнительные проблемы, боюсь, вам придется ждать 8 часов :(
Это работает для вас? если проблема решена, не забудьте отметить ответ как принятый :)
До сих пор нет ответа @ user136301, если ответ сработал для вас, отметьте его как принятый, чтобы другие также могли знать, что ваша проблема решена :)