Избранное »

22.09.2014 – 07:27 | 2 комментария | 27 160 views

Здравствуйте все, кто работает в Индизайне!
Извещаем вас о том, что на youtube.com работает канал «InDesign Мастерская вёрстки». Там уже размещены более 70 видео с полным описанием как работать с программой DoTextOK. Другие интересные темы, касающиеся работы …

Читать полностью »
Работа в InDesign

Хитрости и секреты, приемы работы, уроки

Новая версия!

Особенности новой версии Индизайна

Плагины

Описание плагинов, информация о плагинах для работы с Adobe InDesign

Скрипты

Готовые к использованию скрипты для Adobe InDesign

Скриптинг

Описание языка, приёмов и методов программирования для Adobe InDesign

Home » Работа в InDesign

Замена текста с маршрутом к рисунку на сам рисунок-2

Добавлено на 25.04.2010 – 16:2717 комментариев | 2 348 views

Ранее публиковался скрипт, позволявший размещать картинки рядом с их описанием, но предполагалось, что текст описания рисунков и текст с полными маршрутами к ним будут в разных текстовых цепочках.

Но в другом случае оказалось проще размещать и тексты описания, и информацию о полном маршруте к иллюстрации в одном тексте.

Это стало причиной написания другого скрипта. Теперь полное описание рисунка предваряется маркером <Pict>. В этом абзаце кроме маркера и полного маршрута ничего быть не должно.

inlinepict-script

Программа найдет описание рисунка, в этом абзаце оставит только знак перевода строки и привяжет к нему найденную иллюстрацию. В процессе работы программа ожидает, что пользователь задал стиль абзаца InLineObject для символов перевода строки. Важно, чтобы в этом стиле интерлиньяж был равен Auto, чтобы иллюстрация не накрывала другие строки. Если такого стиля не найдено, программа сама присвоит интерлиньяжу каждого такого абзаца значение Auto. Делать такой стиль или нет — дело ваше, но известно, что для удобства верстки одинаковые текстовые объекты (в том числе и абзацы привязки рисунков) должны иметь одинаковое стилевое оформление.

После помещения иллюстрации в верстку программа ищет стиль объекта ObjectWrap. Хорошая идея — присваивать иллюстрациям во время импорта одинаковый объектный стиль. Это позволит позже единообразно управлять интервалами между текстом и рисунками. Независимо от того, есть такой стиль или нет, программа втиснет рисунок в ширину колонки. Т.е. масштабирование выполняется только, когда рисунок необходимо уменьшить. Если размер рисунка меньше ширины колонки, он не будет масштабироваться.

При возникновении переполнения последнего фрейма в цепочке Story программа остановит свою работу. Устраните эту проблему и снова запустите скрипт. Работа скрипта будет продолжена, и ещё неразмещенные картинки вставятся в текст.

Чтобы понять работу скрипта, сделайте на диске C: каталог C:\picts и поместите в него содержимое архива. Перенесите скрипт InLineGraphics.jsx в каталог Scripts Panel, откройте файл =Test=.inx, поместите курсор в текст и запустите скрипт. Все полные маршруты к рисункам в каталоге C:\picts будут заменены на сами рисунки.

Михаил Иванюшин

ivanyushin#yandex.ru

download

Скачать скрипт InLineGraphics.jsx (с тестовым примером, zip, ~2,4 kB)

Ранее публиковался скрипт, позволявший размещать картинки рядом с их описанием, но предполагалось, что текст описания рисунков и текст с полными маршрутами к ним будут в разных текстовых цепочках.

http://adobeindesign.ru/2009/06/09/zamenatekstasmarshrutomkrisunkunasamrisunok/

Но в другом случае оказалось проще размещать и тексты описания, и информацию о полном маршруте к иллюстрации в одном тексте.

Это стало причиной написания другого скрипта. Теперь полное описание рисунка предваряется маркером <Pict>. В этом абзаце кроме маркера и полного маршрута ничего быть не должно.

Программа найдет описание рисунка, в этом абзаце оставит только знак перевода строки и привяжет к нему найденную иллюстрацию. В процессе работы программа ожидает, что пользователь задал стиль абзаца InLineObject для символов перевода строки. Важно, чтобы в этом стиле интерлиньяж был равен Auto, чтобы иллюстрация не накрывала другие строки. Если такого стиля не найдено, программа сама присвоит интерлиньяжу каждого такого абзаца значение Auto. Делать такой стиль или нет — дело ваше, но известно, что для удобства верстки одинаковые текстовые объекты (в том числе и абзацы привязки рисунков) должны иметь одинаковое стилевое оформление.

После помещения иллюстрации в верстку программа ищет стиль объекта ObjectWrap. Хорошая идея — присваивать иллюстрациям во время импорта одинаковый объектный стиль. Это позволит позже единообразно управлять интервалами между текстом и рисунками. Независимо от того, есть такой стиль или нет, программа втиснет рисунок в ширину колонки. Т.е. масштабирование выполняется только, когда рисунок необходимо уменьшить. Если размер рисунка меньше ширины колонки, он не будет масштабироваться.

Чтобы понять как работу скрипта, сделайте на диске С: каталог \picts и поместите в него содержимое архива. Перенесите скрипт InLineGraphics.jsx в каталог Scripts Panel, откройте файл =Test=.inx, поместите курсор в текст и запустите скрипт. Все полные маршруты к рисункам в каталоге C:\picts будут заменены на сами рисунки.

Михаил Иванюшин

ivanyushin#yandex.ru

17 комментариев »

  • peppper:

    Спасибо, Михаил!

  • rdomino:

    Может кто подсказать, как прописываются параменты привязки объекта?
    (те, что задаются в свойствах стиля объекта — параметры привязанного объекта), а то стандартные к «Строке или над строкой» не имеют параметра для редактирование смещения по оси Х

  • iv-mi:

    «как прописываются параменты привязки объекта»
    В этом варианте нет привязки к объектам. В абзаце, начинающемся с будет только картинка.
    Это же ясно из демонстрационных файлов.
    А почему возник вопрос про привязку?

  • rdomino:

    Да в индизе при помещение графического изображения во фрейм текстовый автоматом идет привязка, только ее параметры как бы не заданы (параметры смещения 0)(привязка к строке, вставка в место курсора) — это и есть привязка считай =) Потому что при смещении абзацев, смещается всё. Ну да ладно, не в этом суть.

    Я хочу поместить картинку типо с рамкой. Обычные методы с абзацным выделением тут не подходят с рисованием линий вертикальных. Они все закреплены на стиле абзаца. Поэтому я решил сделать рисунок — поместить его этим скриптом в маркер и задать рамку фрейму графическому. (тут вопрос как сменить тип линии у фрейма? чтобы был, например, пунктир японский и тд) А вопрос о параметрах возник, потому что рамка должна быть больше фреймовой колонки, поэтому я расширил картинку, но она выходит за границы только справа, потому что в точку маркера строки вставляется рисунок. А если зайти в параметры и включить смещение по Х, то все получается ок) Так же чтобы текст был в рамке этой — тут нужно смещать по У. Из-за этого вопрос)
    НАГЛЯДНО:
    ________________________________
    | тут шапка рисованая |
    |НАЗВАНИЕ ОРГАНИЗАЦИИ | тут стиль символьный
    |Адрес……………..телефон | тут стиль параграфа
    |_______________________________|

  • iv-mi:

    Можно создать объектный стиль, в котором задать тип, цвет линии, и параметры привязки, выбрав режим «Custom», затем применить к вставленному in-line объекту. При помощи Grep можно это проделать ко всем привязанным объектам сразу.

  • rdomino:

    Да да да) именно так! Как это в коде сделать? (прописать)
    Со стилями абзаца намучался, синтаксисы разные написания и у каждого свое заморочки.
    Вырезка из этого скрипта, где это фигурирует:
    with (myInLinePict) { // myInLinePict
    strokeWeight = 1; (поставил уже толщину линии)
    try{
    applyObjectStyle (myDocument.objectStyles.item(«ObjectWrap»)); (вот указание стиля)

    Вот если бы тут параметры сразу прописать, тогда хорошо. Или создать стиль свой и описать его — но только в коде.

    Ручкоми в индизайне создавать — это уже другое (

  • iv-mi:

    Пример создания объектного стиля:
    myObjStyle = myDocument.objectStyles.add({
    name:»anchoredFrame»,
    basedOn:app.activeDocument.objectStyles[0],
    enableParagraphStyle: true,
    appliedParagraphStyle:myParaStyle, // ранее создан
    enableFill:false,
    strokeWeight:0,
    enableAnchoredObjectOptions:true,
    enableTextWrapAndOthers:true
    });
    with (myObjStyle.anchoredObjectSettings)
    {
    spineRelative = false;
    anchoredPosition = AnchorPosition.anchored;
    anchorPoint = AnchorPoint.topLeftAnchor;
    //anchorPoint = AnchorPoint.topRightAnchor;
    horizontalReferencePoint = AnchoredRelativeTo.columnEdge;
    anchorXoffset = 0;
    horizontalAlignment = HorizontalAlignment.leftAlign;
    verticalReferencePoint = VerticallyRelativeTo.lineBaseline;
    anchorYoffset = «2 mm»;
    anchorSpaceAbove = 0;
    //pinPosition = false;
    }

  • rdomino:

    Большое спасибо! Еще не разобрался, где тут задание тех параметров, потому что застрял на моменте куда его поместить в скрипте этом.
    Если после :
    with (myInLinePict) { // myInLinePict
    то он создает стиль снова и снова, функция же зациклина

    В начало пробовал, ошибка тоже какая-то, в середине так же)

  • rdomino:

    Всё, сделал! Огромное спасибо еще раз!
    Есть еще вопросик, как можно узнать координаты х,у точки маркированной?
    Например, я хочу протянуть фрейм этот до точки, найденной через греп.

  • iv-mi:

    знать бы что такое «точка маркированная»

  • rdomino:

    =))))
    В этом скрипте — это строка абзаца с маркером .
    Тут скрипт в номер абзаца вставляет рисунок… а как протянуть рамку, если текст длинее заданной. Номер абзаца не подойдет для параметра геометрикбаунд. Хм.

  • iv-mi:

    Рассчитайте ширину колонки и такой же ширины делайте фрейм для картинки.
    Или, если я не в тему ответил, — сделайте и выложите рисунок с пояснением что есть и чего надо.

  • rdomino:

    ________________________________
    | тут шапка рисованая |
    |НАЗВАНИЕ ОРГАНИЗАЦИИ | тут стиль символьный
    |Адрес……………..телефон | тут стиль параграфа
    |_______________________________|
    под такое сделано стандартной картинкой.

    А если идет там три адреса или три телефона вниз, то надо рамку протянуть вниз по идеи) Единственный путь вижу — это если в конце вставить тоже маркер (метку).

  • admin:

    Попробуйте применить к рамке FitFrameToContent

  • rdomino:

    Применил, когда еще смещал по горизонтали. Картинки делать под каждую колонку — не вариант =)

  • sivangor:

    Скрипт работает в ID6 (Win 8.1)
    Но невозможно его отладить: при пошаговом исполнении в ExtendScript останавливается на строке 31

    if (app.documents.length != 0) { // app.doc

    с сообщением «undefined не является объектом»

    Что это может быть — и как бороться?

  • iv-mi:

    Здравствуйте, sivangor:
    При переходе на ID6 там заметно изменилась объектная модель. Возможно, сбой работы скрипта обусловлен этим.
    Попробуйте исполнять скрипты в версии 5.5,это достигается вот такой определяющей версию программы строкой:
    app.scriptPreferences.version = 7;

Оставить комментарий!

Вы должны быть в системе чтобы оставить комментарий.