Ваш текущий критерий:
Во-первых, критерий, который вы используете в настоящее время для вывода изображения , подвержен ошибкам.Элемент страницы, для которого type равен rectangle
, не обязательно равен image .Например;изображение может быть помещено в круг, в этом случае его type будет oval
(не rectangle
).
Следующая строка кода в вашем вопросе, которая гласит::
set imageList to every rectangle
также будет включать любые элементы страницы, которые были созданы с помощью Rectangle Frame Tool - который во многих .indd
файлах не будет изображением.
Рекомендуемый критерий:
Чтобы вывести изображение, я рекомендую использовать all graphics
вместо rectangles
для получения списка изображений.Словарь Applescript в InDesign описывает graphic
как:
graphic
Импортированное графическое изображение в любом графическом формате файла (включая векторные и растровые форматы.)
Решение:
Следующая таблица AppleScript демонстрирует способ автоматизации процесса маркировки всех изображений с помощью тега XML с именем «Изображения» .Каждое результирующее теговое изображение будет добавлено как дочерний элемент XML корневого элемента XML документа.
set tagName to "Image"
tell application "Adobe InDesign CC 2018"
tell active document
if (count of page items) = 0 then return
set locked of every layer to false
set locked of every page item to false
repeat with currentImage in all graphics
if associated XML element of currentImage is not equal to nothing then
untag associated XML element of currentImage
end if
make XML element at XML element 1 with properties {markup tag:tagName, XML content:currentImage}
end repeat
end tell
end tell
Объяснение
set tagName to "Image"
присваивает имя XML-элемента (т. е. «изображение») переменной tagName
.
Строка, которая гласит:
if (count of page items) = 0 then return
, гарантирует выход изранний сценарий, если документ не содержит элементов страницы.
Строки, которые читаются:
set locked of every layer to false
set locked of every page item to false
, гарантируют, что все слои документа и элементы страницы разблокированы.Если изображение было заблокировано, оно не может быть помечено.
Строки:
if associated XML element of currentImage is not equal to nothing then
untag associated XML element of currentImage
end if
untags любой существующий тег, который может иметь изображениекак это может быть неверно.
Строка чтения:
make XML element at XML element 1 with properties {markup tag:tagName, XML content:currentImage}
выполняет фактическую пометку изображения.