Home » Скрипты

Помещение рисунка в ячейку таблицы

21 Февраль 2012 No Comment

На сайте уже были статьи, посвященные помещению в вёрстку картинок и сопровождающего их текста. Их можно найти здесь, здесь и здесь. Казалось бы, все случаи охвачены этими решениями. Но нет, один мой тёзка из Львова прислал в конце января вопрос, нельзя ли доработать один из этих скриптов, чтобы помещать картинку в ячейку таблицы. (Действительно, возможен вариант вёрстки, например, аптечного справочника, где в трёхколоннике сперва идет название лекарства, затем полный маршрут к картинке, и в крайней правой — описание зелья).
Во вложении скрипт, решающий эту задачу, и сопуствующие файлы, демонстрирующие его работу.
Поместите картинки и indd-файл в каталог C:\picts (просто к этому каталогу привязано полное описание картинок), откройте файл, поместите курсор в таблицу и запустите скрипт.
Описание картинки в ячейке — отдельный однострочный абзац: <Pict>Полное имя файла.


Программа найдет все полные маршруты к рисункам, каждая такая запись предваряется указателем <Pict>, и заменит на эти картинки.
Замена текста на рисунок выполняется так:
- просмотр ячеек выполняется слева направо сверху вниз;
- считывается полный путь к иллюстрации, удаляется весь текст из этой ячейки;
- в ней рисуется иллюстрационный фрейм по размеру ячейки с учётом отступов (insets);
- в этот фрейм вставляется картинка и подгоняется под размер фрейма;
- картинка из фрейма берется в буфер, а сам фрейм стирается;
- теперь в текстовом фрейме нет ничего, и в точку вставки помещается из буфера картинка. В результате картинки можно выключать, как текст, влево, вправо, по центру.

Если картинка не найдена, скрипт останавливается с выводом сообщения, какой файл не найден.
После исправления ошибки адресации картинки повторный запуск скрипта продолжит обработку таблицы.
После обработки выводится информация о числе вставленных картинок.

Скачать скрипт InLineGraphicsInTable.jsx (*.zip с демонстрационным примером)

М.И.

Leave your response!

You must be logged in to post a comment.