איך לפרק תיבת טקסט לפסקאות בתיבות טקסט נפרדות בעזרת סקריפט

קרה לכם שקיבלתם טקסט בקובץ וורד והייתם צריכים לפצל אותו להרבה טקסטים כדי ליצור את העיצוב? במדריך זה נראה שתי שיטות איך לפרק טקסט מקובץ וורד שהדבקתם כתיבת טקסט אחת לתיבות טקסט נפרדות.

למטרה זו נצטרך ליצור סקריפט ונשתמש בצ'אט GPT לעזרה.

הסקיפט יפצל את הטקסט בכל מקום שיש פסקה חדשה. כדי לראות איפה יש פסקה חדשה בתיבת טקסט נלחץ על הקיצור במקלדת Ctrl+Alt+I או מתפריט Type > Show Hidden Characters

הסימן שנראה כמו האות P הפוכה מסמן סוף פסקה. לחיצה שוב על אותו קיצור יחביא את הסימנים הנסתרים האלה.

שיטה אחת

  • בוחרים את התיבת טקסט שרוצים לפרק
  • נגשים לתפריט Object > Flatten Transparency  ולוחצים על OK
  • נלחץ על הקיצור Ctrl+Shift+G או מתפריט Object>Ungroup
  • אם נציג שוב את הסימנים הנסתרים, נראה שבסוף כל שורה מופיעה # המייצגת סוף סיפור כלומר אין עוד טקסט אחרי הסולמית בתיבת טקסט זו
  • נלחץ בצד לביטול הבחירה ואז נוכל להזיז כל שורה בנפרד

בעצם פעולה זו פרקה את תיבת הטקסט לשורות שורות.

שימו לב שיטה זו טובה באנגלית אך בעברית הופכת את הקטסט לצורות.

שיטה שנייה

  • הדביקו טקסט עם מס' רב של פסקאות בתיבת טקסט אחת באילוסטרייטור
  • פתחו בדפדפן את צ'אט GPT
  • ובפרומפט רשמו את הבקשה: יש לי תיבת טקסט עם הרבה פסקאות בתוכה בתוכנת אדובי אילוסטרייטור. תכתוב סקריפט שמפצל את תיבת הטקסט לפסקאות בתיבות טקסט נפרדות
  • העתיקו את הקוד שצ'אט GPT יצר לכם (או העתיקו את הקוד שצירפתי בתחתית המאמר)
  • צרו מסמך בתוכנת NOTEPAD שיש בכל מחשב והדביקו את הקוד
  • שמרו את קובץ בשם שיהיה לכם ברור מה הקוד עושה למשל split_text והסיומת היא jsx כך צריך להראות: split_text.jsx
  • סמנו את תיבת הטקסט שאתם רוצים לפצל לתיבות נפרדות (גם אם זה טקסט בעברית זה בסדר)
  • גשו לתפריט File > Scripts > Other Scrips ובחרו את הקובץ ששמרתם
  • התוצאה הטקסט פוצל כל פסקה בתיבת טקסט נפרדת
  • שימו לב, הטקסטים שקיבלנו נמצאים בתוך פוינט טקסט כלומר שורה ארוכה מאוד ולא תיבות טקסט לכן כדי להפוך פוינט טקסט לתיבת טקסט, לחצו לחיצה כפולה עם כלי הבחירה על הידית הקטנה בצד הטקסט פעמיים והטקסט יומר אוטומטית לתיבת טקסט

בהצלחה 🙂

קבלו פרטים אודות קורס אילוסטרייטור

//Divide TextFrame v.2.2 — CS and up

//>=————————————–

// Divides a multiline text field into separate textFrame objects.

// Basically, each line in the selected text object

// becomes it's own textFrame. Vertical Spacing of each new line is based on leading.

//

// This is the opposite of my "Join TextFrames" scripts which

// takes multiple lines and stitchs them back together into the same object.

// New in 2.1 now right and center justification is kept.

// New in 2.2 better error checking, and now will run on more than one text frame at a time.

//>=————————————–

// JS code (c) copyright: John Wundes ( john@wundes.com ) www.wundes.com

//copyright full text here: http://www.wundes.com/js4ai/copyright.txt

//////////////////////////////////////////////////////////////////

var doc = activeDocument;

var genError= "DivideTextFrame must be run on a point-text text-frame. ";

var ret_re = new RegExp("/[\x03]|[\f]|[\r\n]|[\r]|[\n]|[,]/");

if(doc){

var docsel = doc.selection;

var sel = [];

//remember initial selection set

for(var itemCt=0, len = docsel.length ;itemCt<len;itemCt++){

if(docsel[itemCt].typename == "TextFrame"){

sel.push(docsel[itemCt]);

}

}

if(sel.length){ //alert(sel.length+" items found.");

for(var itemCt=0, len = sel.length ;itemCt<len;itemCt++){

divide(sel[itemCt]);

}

}else{

alert(genError +"Please select a Text-Frame object. (Try ungrouping.)");

}

}else{

alert(genError + "No document found.");

};

function divide(item){

//get object position

var selWidth = item.width;

if(item.contents.indexOf("\n") != -1){

//alert("This IS already a single line object!");

}else{

//getObject justification

var justification = item.story.textRange.justification;

//make array

var lineArr = fieldToArray(item);

tfTop = item.top;

tfLeft = item.left;

item.contents = lineArr[0];

//for each array item, create a new text line

var tr = item.story.textRange;

var vSpacing = tr.leading;

var newTF;

for(j=1 ; j<lineArr.length ; j++){

newTF = item.duplicate(doc, ElementPlacement.PLACEATBEGINNING);

newTF.contents = lineArr;

newTF.top = tfTop – (vSpacing*j);

if(justification == Justification.CENTER)

{

newTF.left = (tfLeft + (selWidth/2)) – (newTF.width/2);

}

else

if(justification == Justification.RIGHT)

{

newTF.left = (tfLeft + selWidth) – newTF.width;

}

else

{

newTF.left = tfLeft;

}

newTF.selected = false;

}

}

function fieldToArray(myField) {

retChars = new Array("\x03","\f","\r","\n");

var tmpTxt = myField.contents.toString();

for (all in retChars )

{

tmpArr = tmpTxt.split(retChars[all]);

}

return tmpTxt.split(ret_re);

}

}