Избранное »

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

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

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

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

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

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

Плагины

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

Скрипты

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

Скриптинг

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

Home » Скрипты

Подсчет площади рисунков в документе

Добавлено на 08.04.2010 – 09:5410 комментариев | 2 309 views

Скрипт для подсчета площади рисунков

Обрабатываются фреймы с рисунками и привязанные к тексту иллюстрации.
Рисунки с одинаковыми именами учитываются один раз за исключением тех, что вставлены через буфер.
Эти объекты не появляются в программе LINKS и учитываются всякий раз при появлении их в вёрстке.
Пользователь должен удалить все неиспользуемые объекты с монтажного стола,
т.к. не задействовано определение, где размещен рисунок — на полосе или за её пределами.
Программа также не учитывает возможное наличие атрибута «Nonprinting» у некоторых фреймов или групп.

SpaceOfPictScript

download

Скачать скрипт SpaceOfPictures.jsx (zip)

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

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

  • Интересно. Так и просится стать компонентом скрипта по подсчету авторских листов. Или такой уже есть?

  • iv-mi:

    «Так и просится стать компонентом скрипта по подсчету авторских листов. Или такой уже есть?»
    Нет, Влад, пока нет. Сейчас в фоновом режиме делаю скрипт подсчета стихотворных строк, потом хорошо бы сделать упрощенный вариант подсчета знаков на выбранных пользователем страницах. Указание диапазона страниц позволит отделить авторский текст от выходных и пр. служебных данных. Знак — это удар по клавише, т.е. разделение на буквы/знаки и пробелы избыточно.
    Если есть охота — сделайте такой подсчет знаков. Буду рад освободившемуся времени, т.к. мыслей, что можно автоматизировать, гораздо больше, чем свободного времени на скриптинг. Только известите, что взялись за эту задачку.

    И мне кажется, на этом этапе надо остановиться.
    Имея число стихотворных строк, площадь рисунков, число знаков, редактор сам всё дальше подсчитает. Он ведь тоже должен поучаствовать в процессе… 🙂

  • Savim:

    Михаил, огромное спасибо за этот скрипт.

    Число знаков я считал скриптом буквально в 1 строку:

    myDocument = app.activeDocument;
    mySelection = app.activeDocument.selection[0];
    alert(«Всего символов: » + mySelection.length);

    На большее моих мозгов не хватило 🙂

  • riki44:

    Спасибо за скрипт. Извините великодушно, но по моему хорошо было-бы добавить сколько цветных и сколько чёрно-белых и то после спуска полос или есть такое?

  • riki44:

    И если можно как-то объясните когда запускаю скрипт по замене набранных букв на английском на русский даёт вот токую картинку.

    А как картинку сюда прикрепить а?

  • iv-mi:

    Вопрос подсчета числа знаков в верстке, возможно, решается одним из этих скриптов:
    http://adobeindesign.ru/2008/10/27/script-textcounter/
    http://adobescripts.info/statistics.html
    Надо попробовать.
    ***
    «хорошо было-бы добавить сколько цветных и сколько чёрно-белых и то после спуска полос или есть такое?»
    Нет, такого нет. Если условиться предварять название ч/б иллюстраций, например, буквой D, а цветных — буквой S (буквы выбраны, чтобы не было их русского аналога по внешнему виду), то можно и такую статистику собирать. Пока этого нет.

    «и то после спуска полос» — не ясно, что имеется в в виду.
    ***
    «И если можно как-то объясните когда запускаю скрипт по замене набранных букв на английском на русский даёт вот токую картинку»
    Тоже не понял, что имеется в виду. Пришлите на мой адрес (он на вкладке «Авторы сайта»), может тогда станет ясно.

  • riki44:

    ой я кажется Борису послал письмо. Сейчас и Вам перешлю письмо

  • eugenyus:

    …потом хорошо бы сделать упрощенный вариант подсчета знаков на выбранных пользователем страницах…
    …Вопрос подсчета числа знаков в верстке, возможно, решается одним из этих скриптов: http://adobeindesign.ru/2008/10/27/script-textcounter/

    Вот этот скрипт, как мне кажется, хорошая основа для таких задач. Только его еще дорабатывать и дорабатывать. От разных людей накопились следующие задачи по его доработке:
    1. Сделать так, чтобы учитывался только текст на страницах (текст на полях учитываться не должен)
    2. Текст с шаблонов должен быть посчитан столько раз, сколько этот шаблон используется, т.к. редакторы-корректоры читают этот текст каждый раз, на каждой странице.
    3. Упомянутый Вами «подсчет знаков на выбранных пользователем страницах» — тоже идея хорошая.

    Вот только времени, как всегда, не хватает. Может действительно, кто возьмется?:)

  • Onger:

    Вот еще один скрипт от mvlad123

    //Рассчитываем площадь всех размещенных (видимых) графических элементов в квадратных сантиметрах
    //Inline-графика, расположенная в неразмещенном тексте, а также на скрытых слоях не учитывается

    var myCalcSquare = CalcSquare();

    alert(«Количество всех иллюстраций (формул)\nв видимых слоях = » + myCalcSquare[0] + «\n\nОбщая площадь всех видимых иллюстраций = » + myCalcSquare[1] + » кв. см»);

    //**************************************************************************************Блок рабочей формулы***************************************************************************************//

    function CalcSquare() {

    var myDocument = app.activeDocument;
    var mySquare = 0; //Начальная площадь иллюстраций = 0
    var myReturn = [0,0];
    //Устанавливаем единицы измерения — сантиметры
    with (myDocument.viewPreferences)
    {
    myOldXUnits = horizontalMeasurementUnits;
    myOldYUnits = verticalMeasurementUnits;
    horizontalMeasurementUnits = MeasurementUnits.CENTIMETERS;
    verticalMeasurementUnits = MeasurementUnits.CENTIMETERS;
    }

    var Len = 0; //Начальное количество иллюстраций = 0
    var myLayers = myDocument.layers;
    for (var j = 0; j < myLayers.length; j++) {

    if (myLayers[j].visible) {

    var myRectangles = myLayers[j].rectangles;
    Len += myRectangles.length;
    for (var m = 0; m < myRectangles.length; m++) {
    var myGraphic = myRectangles[m].graphics.item(0);
    if (myGraphic != null) { //Если в Rectangle содержится графика, то работаем далее
    var myGraphicLink = myGraphic.itemLink;
    //Далее идущие две строки можно отключить, ибо они не связаны с основной фукнциональностью скрипта,
    //а проверяют правильность связи (УБЕРИТЕ ЗНАК КОММЕНТАРИЕВ — (//) ДЛЯ ВКЛЮЧЕНИЯ ЭТИХ ФУНКЦИЙ)
    //if (myGraphicLink.status != LinkStatus.NORMAL) {myGraphicLink.update()}
    //и подгоняют текстовый фрейм по графическому объекту — аналог команды Ctrl + C
    //myRectangles[m].geometricBounds = myGraphic.geometricBounds;
    mySquareGraph = (myRectangles[m].geometricBounds[2] — myRectangles[m].geometricBounds[0])*(myRectangles[m].geometricBounds[3] — myRectangles[m].geometricBounds[1]);
    mySquare += mySquareGraph;
    } //if (myGraphic != null)
    } //for (var m = 0; m < myRectangles.length; m++)

    var myTextFrames = myLayers[j].textFrames

    for (var k = 0; k < myTextFrames.length; k++) {
    var myRectangles = myTextFrames[k].rectangles;
    Len += myRectangles.length;
    for (var i = 0; i < myRectangles.length; i++) {
    var myGraphic = myRectangles[i].graphics.item(0);
    if (myGraphic != null) { //Если в Rectangle содержится графика, то работаем далее
    var myGraphicLink = myGraphic.itemLink;
    //Далее идущие две строки можно отключить, ибо они не связаны с основной фукнциональностью скрипта,
    //а проверяют правильность связи (УБЕРИТЕ ЗНАК КОММЕНТАРИЕВ — (//) ДЛЯ ВКЛЮЧЕНИЯ ЭТИХ ФУНКЦИЙ)
    //if (myGraphicLink.status != LinkStatus.NORMAL) {myGraphicLink.update()}
    //и подгоняют текстовый фрейм по графическому объекту — аналог команды Ctrl + C
    //myRectangles[i].geometricBounds = myGraphic.geometricBounds;
    mySquareGraph = (myRectangles[i].geometricBounds[2] — myRectangles[i].geometricBounds[0])*(myRectangles[i].geometricBounds[3] — myRectangles[i].geometricBounds[1]);
    mySquare += mySquareGraph;
    } //if (myGraphic != null)
    }//for (var i = 0; i < myRectangles.length; i++)
    } //if (myLayers[j].visible)
    } //for (var k = 0; k < myTextFrames.length; k++)
    } //for (var j = 0; j < myLayers.length; j++)

    //Возвращаем исходные единицы измерения
    with (myDocument.viewPreferences) {
    horizontalMeasurementUnits = myOldXUnits;
    verticalMeasurementUnits = myOldYUnits;
    }
    myReturn = [Len,mySquare];
    return myReturn;
    }

  • iv-mi:

    Спасибо, всегда интересно узнать, как другие решали схожую задачу.
    На первый взгляд, тут не учитывается, что одна картинка может встречаться в верстке несколько раз.
    Найду время, познакомлюсь с этим кодом поближе.

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

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