Extrahieren Sie den Text aus einer Illustrator-Datei, einer API oder einem Skript?

Ich arbeite an einem Projekt, das 1000 Dateien mit demselben Tippfehler enthält. die Datei mit dem Wort "Hunde", das in "Hund" umgewandelt werden muss. Diese 1000 Dateien haben den gleichen Tippfehler. Gibt es überhaupt, dass ich ein Skript schreiben kann, um das in Illustrator zu tun? oder eine API, mit der ich Text aus der Datei extrahieren und dann bearbeiten kann (von "Hunde" in "Hund" ändern) und dann wieder speichern, weil ich nicht 1000 Dateien öffnen und es 1000 Mal tun möchte.

ist das Wort "Hunde" eine Textebene?
Ja, es befindet sich in einer Textebene, ist aber in einer anderen Ebene verschachtelt.
Dieses Skript macht nicht genau das, was Sie wollen, aber wenn Sie bereit sind, das Skript so zu manipulieren, dass es das tut, was Sie wollen, sind es bereits 90 %: forums.adobe.com/message/10364559#10364559 - Sie könnten es vielleicht schaffen eine Aktion, bei der Sie das Skript ausführen und es dann stapelweise für alle Ihre Dokumente ausführen. - Ich muss sagen, das ist das erste Mal, dass ich ein Skript mit einem "Spenden"-Dialog sehe.

Antworten (1)

Dieses Skript findet das Schlüsselwort „Hunde“ und ersetzt es in allen geöffneten Dokumenten durch „Hund“.

    #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
    }

}

Wenn Sie also Wörter aus allen geöffneten Dokumenten ersetzen möchten, können Sie dies verwenden. Speichern Sie diesen Code und ReplaceTest(orWhatever).jsxlegen Sie ihn dann in Ihrem Skriptordner ab, und starten Sie Ihren Illustrator neu. Sie finden Ihr Skript unter File-Scripts.

Geben Sie hier die Bildbeschreibung ein

Kommentieren Sie Ihre Anforderung unten für weitere Verbesserungen im Code :) Sie können sehen, wie ich es erreicht habe; Vergessen Sie nicht, den Schließbefehl zu kommentieren, wenn Sie Ihre Datei geöffnet lassen möchten

Geben Sie hier die Bildbeschreibung ein

wow, vielen Dank für Ihre Hilfe Design Phoenix, ich hätte gerne 2 weitere Verbesserungen, 1. Ich möchte, dass es mir mitteilt, welches Dokument bearbeitet wurde und welches nicht, da einige Dateien das Wort Hund enthalten und andere nicht Ich möchte eine Liste der bearbeiteten Dateien erhalten. 2. Kann ich den Ordnerpfad angeben und jede Datei in diesem Ordner automatisieren lassen, ohne dass ich 100 Dateien manuell öffnen muss? Ich verwende MacOS. Vielen dank für Ihre Hilfe
Wenn Sie einen Ordner haben, können Sie mir Dateimuster wie test_1 test_2 usw. mitteilen?
Newyork 0244, Newyork 0245, Newyork 0246, Newyork 0247 Kalifornien 2230, Kalifornien 2231, Kalifornien 2232 etwa so. vielen Dank für deine Hilfe.
Nun, ist es in Ordnung, wenn Sie Newyork einmal eingeben und alle Ihre Newyork-benannten Dateien bearbeiten?
das wäre auch super.
okay ich versuche es :)
Ich habe Ihr Skript ausprobiert und es funktioniert ordnungsgemäß, außer nachdem es den Text ersetzt hat, wird der Text nach links eingerückt. Kann das Skript den Text nur ersetzen und nicht nach links einrücken?
Ich habe es mit einer einfachen Textdatei versucht, es funktioniert perfekt, aber wenn ich es in einer tatsächlichen Datei verwende, wird nicht nur Text ersetzt, sondern auch nach links eingerückt. Vielleicht liegt es daran, dass die Textobjektebene in einem anderen Objekt verschachtelt ist. Gibt es eine Möglichkeit diesen Effekt auszuschalten?
Ich bin mir nicht sicher, aber siehe meine bearbeitete Antwort
Ich habe meine Antwort bearbeitet und ja, es muss eine Möglichkeit geben, die Schrift in der Mitte zu halten. Also ändert sich Ihre Schriftausrichtung nach links???
@ user136301 Getestet und jetzt ändern meine Skripte alle Textausrichtungen in die Mitte :) und sorry, da meine Dienstzeit vorbei ist. Wenn Sie also weitere Probleme haben, müssen Sie leider 8 Stunden warten :(
Funktioniert es bei dir? Wenn es Ihr Problem gelöst hat, vergessen Sie nicht, die Antwort als akzeptiert zu markieren :)
Immer noch keine Antwort @ user136301 Wenn die Antwort für Sie funktioniert hat, markieren Sie sie bitte als akzeptiert, damit andere auch wissen können, dass Ihr Problem gelöst ist :)