Помощь - Поиск - Пользователи - Календарь
Полная версия: Overflow текста в Paragraph в AI10
ProDTP > Графика и препресс > Скриптинг
azbuka_guest
Уже несколько дней мучаюсь с проблемой:

В AI10 скритпом заполняю Paragraph'ы - все нормально. Но никак не могу проверить весь ли текст убрался или что-то вылезло за пределы.
В CS, вроде, объект есть Story и через него как-то можно узнать. А в 10-ке я и этого объекта не нашел.

Не подскажет ли кто, как это сделать скритпом и возможно ли это вообще?
azbuka_guest
нашел извратный способ:
у Pararagraf'а есть коллекция lines.
Пробегаемся по ней и строки склеиваем в одну. А потом сравниваем то что получилось, с тем что фактически лежит в myParagraph.Contents.
Если совпало - строка полностьб отображается на экране. Если склеенная строка короче Contents - значит обрезается.

Оригинальный, вообщем, способ.

Но опять возникла проблема. В AI у Paragraph'а есть поле Note.  Заполняю его. Но из скрипта не могу достать эту ниформацию - пусто там.
Делаю так
Illustrator.Document illDoc = ilApp.Documents[1];
Illustrator.PageItem pi = illDoc.PageItems["NameOfParagraph"];
Illustrator.TextArtItem tart= pi.TextArtItem;
Illustrator.Paragraph par = tart.TextRange(null,null).Paragraphs[1];
string MyNote = par.Note;

может до параграфа надо как-то по другому добираться?
vd
Цитата
нашел извратный способ:
у Pararagraf'а есть коллекция lines.
Пробегаемся по ней и строки склеиваем в одну. А потом сравниваем то что получилось, с тем что фактически лежит в myParagraph.Contents.
Если совпало - строка полностьб отображается на экране. Если склеенная строка короче Contents - значит обрезается.

Оригинальный, вообщем, способ.

главное что выход нашел  :-)

Цитата


Но опять возникла проблема. В AI у Paragraph'а есть поле Note.  Заполняю его. Но из скрипта не могу достать эту ниформацию - пусто там.
Делаю так
Illustrator.Document illDoc = ilApp.Documents[1];
Illustrator.PageItem pi = illDoc.PageItems[\"NameOfParagraph\"];
Illustrator.TextArtItem tart= pi.TextArtItem;
Illustrator.Paragraph par = tart.TextRange(null,null).Paragraphs[1];
string MyNote = par.Note;

может до параграфа надо как-то по другому добираться?


(это явно не js)

в CS, если бы это был текстфрейм, то paragraphs это потомок этого фрейма...
типа

textFrame.pragraphs[1];

(может тебе попробовать): 
Illustrator.Paragraph par = tart.Paragraphs[1];
azbuka_guest
да это C#
контент генерим не сервере при помощи AI и отдаем наружу на CS.

>Illustrator.Paragraph par = tart.Paragraphs[1];
нет такой возможности. Если Js так позволяет, то это все равно развертывается в
Illustrator.Paragraph par = tart.TextRange(null,null).Paragraphs[1];

хм.
А как в Js докопаться до Note у paragraph'a?
только проверьте, что он действительно что то возвращает, а не пустую строку.
azbuka_guest
Все нашел как достать эти Notes.

Все хитро оказалось.  Что такое Note у того же параграфа (как и у других объектов) - это загадкой для меня осталось.

А достать те Notes, которые в самом илле вбивались можно достать только так:

Illustrator.PageItem pi = illDoc.PageItems["MyParagrafName"];
Illustrator.TextArtItem tart= pi.TextArtItem;
Illustrator.Tag tg =tart.Tags[1];
после чего
tg.Name == "AdobeNoteAttribute"
и tg.Value == "My entered text"

вот. может и пригодится кому. Просто мы в это Notes вбиваем правила для обработки парарафов. и нужно их доставать.

Это сообщение было отредактировано:  kastec, 22 Июл, 2004 - 15:22
steve
Как в 10 (а не ЦС) определить overflow?

Это сообщение было отредактировано:  Steve, 08 Ноя, 2004 - 13:56
steve
Цитата
VD: 
нашел извратный способ:
у Pararagraf'а есть коллекция lines.
Пробегаемся по ней и строки склеиваем в одну. А потом сравниваем то что получилось, с тем что фактически лежит в myParagraph.Contents.
Если совпало - строка полностьб отображается на экране. Если склеенная строка короче Contents - значит обрезается.

Оригинальный, вообщем, способ. 

чуток неправильный способ... может быть ситуация когда сумма лайнов=длине контента, а бокс с +, т.е. слово(а) бьются.
Есть несколько вариантов как проверить: например, посмотреть какой последний символ у каждого лайна (последним может только быть - пробел, перенос и т.д., последний лайн в игнор).
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.
Русская версия Invision Power Board © 2001-2012 Invision Power Services, Inc.

Реклама

   Rambler's Top100    Яндекс цитирования