Пользовательские данные внутри файлов IDML

Я ищу способ вставки пользовательских данных в файлы IDML с помощью сценариев, но я не уверен, что это возможно.

В спецификации IDML указано: «IDML поддерживает включение новых объектов сценариев и свойств, добавленных подключаемыми модулями InDesign», но о сценариях ничего не говорится.

Я уже пытался добавить пользовательскую переменную в объект TextFrame, но безуспешно (очевидно, структура объекта неизменна).

Есть ли способ сделать это без написания плагина?

Должна быть возможность добавлять пользовательские данные в XMP ( https://indisnip.wordpress.com/2010/09/07/storing-custom-data-into-indesign-file-xmp/ ), но это потребует гораздо больше работы. потому что мне пришлось бы каким-то образом ссылаться на каждый объект и их пользовательские значения. Кроме того, мне нужно проверить спецификации XMP, потому что я не уверен, есть ли ограничения по размеру для пользовательских данных (это может быть проблемой).

Ответы (1)

Вы можете использовать метки сценариев для сохранения информации в файле idml.

// create a new doc
var doc1 = app.documents.add();
// add a label
// everything can have a scripting label
// textFrames, ovals, pages, swatches ...
doc1.label = 'foo';
// save the file
doc1.save(new File('~/Desktop/doc1.indd'));
// export the idml file
doc1.exportFile(ExportFormat.INDESIGN_MARKUP, new File('~/Desktop/doc1.idml'), false);
// close the first document
doc1.close();
// open the idml file
var doc2 = app.open(File('~/Desktop/doc1.idml'));
// read the label
$.writeln(doc2.label); // returns 'foo'
Я не знал о существовании свойства "метка". Покопавшись в JS API, я обнаружил, что свойство label доступно и для элементов TextFrame, и его значение действительно сохраняется в файле IDML. Спасибо!