Если есть вопросы по скриптам

Статус
Закрыто для дальнейших ответов.

sakhar

Professional
15 лет на форуме
Сообщения
1 550
Реакции
134
Ответ: Если есть вопросы по скриптам

На VB не могу пример привести, с синтаксисом боюсь ошибиться.
А на JS пожалуйста - возьмите, например, мой скрипт SpisokConvert, там найдете пример использования RegExp.
 

Алена

Участник
Сообщения
30
Реакции
0
Ответ: Если есть вопросы по скриптам

Спасибо за совет!

На VB у меня вышло так:
Dim myReg As RegExp
Dim myMatches As MatchCollection, myMatch As Match

With myReg
.IgnoreCase = True
.Global = True
.MultiLine = False
.Pattern = "<img>(.*)</img>"
End With
Set mySelect = csInDesign.Selection.Item(1).ParentStory
str = mySelect.Contents
Set myMatches = myReg.Execute(str)
For Each myMatch In myMatches
MsgBox myMatch.Value
MsgBox myMatch.SubMatches(0)
Next myMatch

Только вот перебор строк пришлось организовать через 2 цикла, внутри текстовых фреймов и по абзацам, т.к в данном случае str это текст выделенного объекта
 

Алена

Участник
Сообщения
30
Реакции
0
Ответ: Если есть вопросы по скриптам

Подскажите, а как по аналогии выделить текст в visual basic?

var myText = myParagraph.characters.itemByRange(1, (myParagraph.characters.length - 2));
myText.select(1919250519);

Делаю так:
Set mytext = csDoc.TextFrames.Item(1).Paragraphs.Item(1).Characters.ItemByRange(1, 10)
mytext.Select
выдает ошибку :(
 

Алена

Участник
Сообщения
30
Реакции
0
Ответ: Если есть вопросы по скриптам

И еще, как выделить текст таким образом, чтобы при его Cut -Paste он вставлялся без перехода на новый абзац?
Может кто-нибудь все ж подскажет?
 

sakhar

Professional
15 лет на форуме
Сообщения
1 550
Реакции
134
Ответ: Если есть вопросы по скриптам

К сожалению, на VB подобные вещи как на JS не получаются.
Нужно делать через одно место:
PHP:
Set myInDesign = CreateObject("InDesign.Application.CS2")
Set myDocument = myInDesign.ActiveDocument
Set myTextFrame = myDocument.TextFrames.Item(1)
Set mytext = myTextFrame.ParentStory.Paragraphs.Item(1)
mytext.Characters.Item(1).Select 1919250519
mytext.Characters.Item(10).Select 1633969202
Второй ваш вопрос не совсем понял, поясните пожалуйста.
 

Алена

Участник
Сообщения
30
Реакции
0
Ответ: Если есть вопросы по скриптам

sakhar сказал(а):
Второй ваш вопрос не совсем понял, поясните пожалуйста.
myParagraph.Select 'так я выделяю текст
csInDesign.Cut 'удаляю выделенный

затем добавляю таблицу и вставляю удаленный текст, он вставляется в таком виде:
1 'символ перехода на новый абзац
#

а нужно чтоб было так:
1#

Спасибо!
 

Алена

Участник
Сообщения
30
Реакции
0
Ответ: Если есть вопросы по скриптам

С этим немного разобралась, используя Ваш пример, вместо Count надо (Count-1):
myParagraph.Characters.Item(1).Select 1919250519
myParagraph.Characters.Item(myParagraph.Characters.Count - 1).Select 1633969202 'выделяю весь текст
иначе получает лишний символ, как в примере выше
И если использовать просто myParagraph.Select - та же ерунда.

Спасибо!!!
 

vbatushev

20 лет на форуме
Сообщения
2 242
Реакции
1 227
Ответ: Если есть вопросы по скриптам

Ален, ну а как же иначе? Ведь абзац заканчивается символом конца абзаца (Chr(13)). И если Вы выделяете абзац целиком (Paragraph.Select), Вы выделяете и оный символ.
 

Алена

Участник
Сообщения
30
Реакции
0
Ответ: Если есть вопросы по скриптам

vbatushev сказал(а):
Ален, ну а как же иначе? Ведь абзац заканчивается символом конца абзаца (Chr(13)). И если Вы выделяете абзац целиком (Paragraph.Select), Вы выделяете и оный символ.
Согласна, только вот по-другому как выделить текст не сообразила. Пробовала через Characters - выделяются по одной букве, спасибо подсказали как надо :)
 

Алена

Участник
Сообщения
30
Реакции
0
Ответ: Если есть вопросы по скриптам

В текстовый фрейм вставлена таблица. Как сделать ее ячейку шириной во весь фрейм?
Делаю так:
Set mycell = mytable.Cells(1)
myBounds = csDoc.TextFrames.Item(1).VisibleBounds
Y1 = myBounds(0)
X1 = myBounds(1)
Y2 = myBounds(2)
X2 = myBounds(3)
s = X2 - X1
mycell.Width = s

Это правильно или есть другой способ?
 

Алена

Участник
Сообщения
30
Реакции
0
Ответ: Если есть вопросы по скриптам

В текстовый фрейм нужно добавить графический.
Как указать размеры графического фрейма?
 

sakhar

Professional
15 лет на форуме
Сообщения
1 550
Реакции
134
Ответ: Если есть вопросы по скриптам

Алена сказал(а):
Это правильно или есть другой способ?
Можно и так, способов много.
Алена сказал(а):
В текстовый фрейм нужно добавить графический.
Как указать размеры графического фрейма?
Самый простой вариант: вставить textframe, указать его размеры и с помощью contentType слелать его графическим.
 

Алена

Участник
Сообщения
30
Реакции
0
Ответ: Если есть вопросы по скриптам

Во фрейме оч много абзацев.
Я ищу определенный текст, если нахожу-то вставляю вместо него Rectangle в соответствии с шириной фрейма и высотой 24. Опять здесь все с GeometricBounds связано? Тогда как узнать координаты конкретного кусочка текста, если таковые есть вообще..
 

sakhar

Professional
15 лет на форуме
Сообщения
1 550
Реакции
134
Ответ: Если есть вопросы по скриптам

Если restangle, тогда при чем здесь графический фрейм??? У Restangle есть свой geometricBounds.
А координаты текста Y и X - baseline и horisonlalOffset соответственно.
 

Алена

Участник
Сообщения
30
Реакции
0
Ответ: Если есть вопросы по скриптам

Что-то странное творится: выделяю текст абзаца, копирую в буфер затем вставляю в таблицу. Если в этом тексте изображение и текст, с установленным обтеканием, то получается картинка не влазит в ячейку. Может кто сталкивался..

Код:
myParagraph.Characters.Item(1).Select 1919250519
 myParagraph.Characters.Item(myParagraph.Characters.Count - 1).Select  1633969202
 csInDesign.Cut

 myTable.Rows.Item(1).Cells.Item(1).InsertionPoints.Item(1).Select 1919250519
 Form1.csInDesign.Paste
 

sakhar

Professional
15 лет на форуме
Сообщения
1 550
Реакции
134
Ответ: Если есть вопросы по скриптам

А вы вручную пробовали эту операцию проделывать? Скопировать этот текст с картинкой в ячейку таблицы? Как минимум, высота этой ячейки должна быть автоматическая (либо заведомо бОльшая), а ширина (с учетом отступов) с запасом больше ширины картинки. И настройки переноса должны быть соответствующие.
 

Алена

Участник
Сообщения
30
Реакции
0
Ответ: Если есть вопросы по скриптам

sakhar сказал(а):
А вы вручную пробовали эту операцию проделывать? Скопировать этот текст с картинкой в ячейку таблицы? Как минимум, высота этой ячейки должна быть автоматическая (либо заведомо бОльшая), а ширина (с учетом отступов) с запасом больше ширины картинки. И настройки переноса должны быть соответствующие.
При копировании вручную тоже самое. А вот картинка по ширине больше ячейки. Это что же, нужно уменьшать ее размер? Она вставляется как и текст, с отступом. Нужно, чтобы без отступов.
 

sakhar

Professional
15 лет на форуме
Сообщения
1 550
Реакции
134
Ответ: Если есть вопросы по скриптам

Алена сказал(а):
При копировании вручную тоже самое.
Ну вот, а что же вы от скрипта хотите... :)
А вот картинка по ширине больше ячейки. Это что же, нужно уменьшать ее размер?
А как вы думаете? Или уменьшать ее размер, или увеличивать размер ячейки.
Она вставляется как и текст, с отступом. Нужно, чтобы без отступов.
Настраивайте параметры ячейки и вставляемого текста.
 

Алена

Участник
Сообщения
30
Реакции
0
Ответ: Если есть вопросы по скриптам

sakhar сказал(а):
Ну вот, а что же вы от скрипта хотите... :) А как вы думаете? Или уменьшать ее размер, или увеличивать размер ячейки. Настраивайте параметры ячейки и вставляемого текста.
ОК. Спасибо.
 

Алена

Участник
Сообщения
30
Реакции
0
Ответ: Если есть вопросы по скриптам

sakhar сказал(а):
Настраивайте параметры ячейки и вставляемого текста.
Картинка и текст принадлежат одному абзацу. Как узнать, что в выделенном тексте есть картинка и для нее сделать нулевые отступы в ячейке? Пробую через
Set mySelection = Form1.csInDesign.Selection
MsgBox (TypeName(mySelection.Item(1)))
показывает Text или Character
 
Статус
Закрыто для дальнейших ответов.