Зацените мой первый скрипт: Text To Outlines

  • Автор темы Автор темы dnv
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

dnv

Участник
Топикстартер
Сообщения
10
Реакции
0
если в InDesign 2 выделить все объекты и сделать Create Outlines, возникают проблемы
например при этом исчезает фон текстового фрейма
приходится вручную выделять текст каждого фрейма и конвертировать

данный скрипт конвертирует текст в Outlines не задевая сами фреймы
Код:
Option Explicit

'Name:	Text_To_Outlines
'Version:	1.0
'Author:	Dmitriy Nikitenko (DNV)
'Date :		22.05.2004 (мой первый скрипт для InDesign :)

'Description:
'если в InDesign выделить все объекты и сделать Create Outlines, возникают проблемы
'например при этом исчезает фон текстового фрейма 
'данный скрипт конвертирует текст в Outlines не задевая сами фреймы


Dim myInDesign, myPub, myStories
Dim i, k
'открываем объекты
Set myInDesign = CreateObject("InDesign.Application")
Set myPub = myInDesign.ActiveDocument
Set myStories = myPub.Stories

If myPub.Stories.Count = 0 Then
      MsgBox "There isn't any Text Frames in the document"
Else
      On Error Resume Next
      For i = 1 To myStories.Count 'перебираем текст. фреймы
            For Each k In myStories(i).Texts 'перебираем блоки
                  k.CreateOutlines 'конвертируем
            Next
      Next
      On Error GoTo 0
      msgbox ("Convert to Outlines finished successfully")
End If
'закрываем объекты
Set myStories = Nothing
Set myPub = Nothing
Set myInDesign = Nothing
 
Ответ: Зацените мой первый скрипт: Text To Outlines

Как насчет размещения на http://indesign.rudtp.ru?
 
Ответ: Зацените мой первый скрипт: Text To Outlines

Разместите :)
Вот еще прога на VB6 с исходниками
кладем exe'шник в папку с файлами *.indd
запускаем его и все файлы конвертируются в кривые по этому же алгоритму и складываются в подпапку Outlines
 

Вложения

Ответ: Зацените мой первый скрипт: Text To Outlines

только еще один вопрос.
иногда в блоках Text встречаются уже сконвертированные в кривые символы
в таких случаях k.CreateOutlines даст ошибку, поэтому я использовал On Error Resume Next
Код:
      On Error Resume Next
      For i = 1 To myStories.Count 'перебираем текст. фреймы
            For Each k In myStories(i).Texts 'перебираем блоки
                  k.CreateOutlines 'конвертируем
            Next
      Next
      On Error GoTo 0
End If
ВОПРОС: можно ли определить, является ли k кривой? чтобы лишний раз не провоцировать ошибку
 
Ответ: Зацените мой первый скрипт: Text To Outlines

А зачем определять? Ты же работаешь напрямую с набором текстов в story, а не с оутлайновыми элементами, которые текстами уже не являются.
 
Ответ: Зацените мой первый скрипт: Text To Outlines

да, но если у меня в Storiies попадается блок Text c одним единственным "кривым" объектом, то дает ошибку.

в принципе On error resume next предотвращает это,
но хотелось бы как-то поцивильнее :)
 
Ответ: Зацените мой первый скрипт: Text To Outlines

Это стандартная «цивильная» процедура, описанная, наверное, в каждой книжке по VB.
 
Ответ: Зацените мой первый скрипт: Text To Outlines

Shlyapa, у тебя, по моему, проблемы с русским языком.

я спрашиваю как обойти "On error resume next"
а не говорю, что это пик моей проницательности.
 
Ответ: Зацените мой первый скрипт: Text To Outlines

Не понял, что обойти?
Чтобы On error resume next не отрабатывался?

Дык, есть ещё и код ошибки, и возможность выполнять те или иные действия в зависимости от его значения.

Оформляется это, насколько помню (и подглядет-то сейчас негде), так:
On error resume [имя процедуры]

В этой процедуре всё и описано, что и как делать в зависимости от кода ошибки.

Об этом тоже в каждом учебнике написано.

Или мы опять друг друга не поняли?
 
Ответ: Зацените мой первый скрипт: Text To Outlines

Повторяю мой вопрос с самого начала
ВОПРОС: можно ли определить, является ли k кривой? чтобы лишний раз не провоцировать ошибку
На обработку системой возникшей ошибки уходит больше ресурсов и времени, чем если бы я просто проверил, нужно ли вообще конвертировать.

Но вопрос даже не в производительности, в данном случае в скорости особо и не выиграешь.
Просто мне интересно, как определить, что в объекте 'Text'? текст или кривые?
В будущих скриптах может понадобится.
 
Статус
Закрыто для дальнейших ответов.