Замена текста с маршрутом к рисунку на сам рисунок
Недавно пришлось делать каталог акций для аукциона. 700 лотов, в большинстве их представлена одна бумага, но в некоторых лотах выставлялись на торги несколько раритетов. Сроки были жесткие, и пришлось придумывать средство ускорения размещения картинок. В результате был разработан скрипт, автоматизирующий этот процесс.
Идея такая — рядом с описаниями лотов разместить связанные в цепочку текстовые фреймы, содержащие полные имена файлов к необходимым иллюстрациям. Далее скриптом в эти фреймы вставить сами иллюстрации.
Предварительно необходимо подготовить файл с полным маршрутом к иллюстрациям и затем залить его в цепочку текстовых фреймов, по одной строке в каждом фрейме.
Когда убедимся, что рядом с описанием стоит имя нужного файла, запускаем этот скрипт.
Он идет по текстовой цепи, находит по имени иллюстрации её саму, превращает текстовый фрейм в иллюстрационный, помещает в него картинку и сперва подгоняет её под размер фрейма, а затем размер фрейма делает равным размеру отмасштабированной картинки.
Процедура преобразования имен файлов в их изображения идет, начиная с конца текстовой цепочки.
Очевидно, что если есть один фрейм, и в нем одно полное имя, то эта ситуация тоже будет обработана.
В текстовой цепочке с полными именами файлов не должно быть переполнения, число строк описаний должно совпадать с числом текстовых фреймов, последним символом в тексте описания иллюстраций должен быть знак перевода строки.
Конечно не удастся избежать работы по позиционированию некоторых фреймов с рисунками, но я себе тогда не один полный рабочий день сэкономил, размещая лоты каталога с помощью этого скрипта.
Как готовить файл с полным маршрутом к каждой иллюстрации
Вот, на мой взгляд, самый простой способ.
Желательно, чтобы имена файлов состояли только из латинских букв.
1) Создаем каталог C:\Picts, помещаем в него все рисунки.
2) Переходим в режим Командной строки, встаем на диск С:
>C:(enter)
3) переходим в корень этого диска
>cd\(enter)
4) переходим в каталог Picts
>cd Picts(enter)
5) Сохраняем перечень файлов этого каталога в файле picts.txt
> dir /b > picts.txt(enter)
6) Вводим команду exit для завершения работы в Командной строке.
7) Открываем этот файл в ворде, удаляем в нем строку picts.txt и добавляем перед каждым именем файла C:\Picts\
Это можно сделать в режиме поиска/замены (enter) на C:\Picts\(enter)
Теперь этот файл надо импортировать в Индизайн, сделать стиль, размещающий одну строку в каждом текстовом фрейме (рис. 1) и запустить скрипт.
(Тем, кто использует в своей работе расширенные сборки TotalCommander, необходимо открыть папку с рисунками, выделить все файлы и выполнить команду Инструменты > Копировать полные имена. Затем в Индизайне вытащить готовый список из буфера обмена — Ctrl+V).
Рис. 1. Создание стиля, размещающего одну строку в текстовом фрейме
После выполнения требований соответствия числа записей числу связанных фреймов и обязательности знака перевода строки в конце текстовой цепи все картинки будут размещены в фреймах.
Рис. 2. Сверстанная страница
Советую готовить текстовые фреймы в мастере и копировать их на другой слой. Тогда будет возможность вернуться на предыдущий уровень, если обнаружится, что пропущен один из рисунков. Если не скопировать, то придется все рисовать заново.
Михаил Иванюшин
Продолжение темы здесь.
Доброго времени суток. Михаил, не могли бы вы помочь с переделкой этого скрипта, так чтобы помещать не изображения, а txt-файлы. Я не силен в скриптинге, поэтому переделать самостоятельно к сожалению пока не получается. Я так понимаю в скрипте нужно убрать часть где ткстовые фреймы преобразуются в графические, и сразу после создания списка грузить в них txt-файлы. Но вот пока у меня ничего не получается. Видимо сначала нужно заняться чтением мануалов по JavaScripting, а времени нет…
Не ясно, что надо сделать. Навскидку и делать-то скриптом ничего не нужно — есть текст, и размещайте его по связанным текстовым фреймам. Для принудительного перехода в текстовой цепи от фрейма к фрейму есть команда Frame Break (Shift+Num Enter).
Если у Вас текст размещен в нескольких файлах, то его надо собрать в один в ворде, а потом помещать в верстку. Как быстро собрать несколько файлов в один, читайте тут:
http://www.prodtp.ru/index.php?showtopic=20931
Или изложите задачу подробнее, можно в письме на мой адрес, вместе подумаем.
Я понял вас, буду пробовать с объединением. Есть некоторые ньюансы, поэтому если зайду в тупик, попробую изложить подробнее. В любом случае спасибо что не оставили без ответа моё сообщение 🙂
Вместо
dir /b > picts.txt
можно написать
dir /b /s > picts.txt
— и сразу получить список полных имён, с директориями.
Ещё удобнее будет, если данную строку сохранить в виде текстового файла и переименовать его расширение в .bat — получится исполняемый файл. Дальше класть его в директорию, которую нужно обработать, и запускать.
Одно «но» — в списке оказываются также имена вложенных каталогов. Их придётся удалить вручную.
Наберите в терминале команду «help dir», чтобы узнать другие варианты получения информации о директории.
Задача сверстать каталог, 700 фотографий и под каждой 4 строчки текста, проблема в том, что что фотографии это Tif с сохраненной прозрачностью, когда такую фотографию ставишь в indis командой place, все ставится нормально, когда используется ваш скрипт, то прозрачность заливается черным цветом, решаемо ли это? Заранее спасибо.