Вы можете использовать метод setProperty()
в библиотеке AdobeXMPScript , чтобы создать и установить значение для DocumentID
и InstanceID
Ниже приведено несколько вспомогательных функций для добавления DocumentID
и InstanceID
.
// Note: This function works on macOS only
function generateUUID() {
var cmd = 'do shell script "uuidgen | tr -d " & quoted form of "-"';
return app.doScript(cmd, ScriptLanguage.applescriptLanguage);
}
// Add an XMP property and Value.
function addXmpPropertyAndValue(filePath, xmpProperty, xmpValue) {
var xmpFile = new XMPFile(filePath, XMPConst.FILE_UNKNOWN, XMPConst.OPEN_FOR_UPDATE);
var allXMP = xmpFile.getXMP();
allXMP.setProperty(XMPConst.NS_XMP_MM, xmpProperty, xmpValue);
if (xmpFile.canPutXMP(allXMP)) {
xmpFile.putXMP(allXMP);
}
xmpFile.closeFile(XMPConst.CLOSE_UPDATE_SAFELY);
// Useful for testing purposes....
alert('Added: ' + xmpProperty + '\n' +
'value: ' + xmpValue + '\n\n' +
'Path: ' + filePath, 'Updated XMP', false);
}
Чтобы добавить instanceID
, вызовите функцию addXmpPropertyAndValue
следующим образом:
// The `linkFilepath` argument should be the filepath to the Link you want to update
addXmpPropertyAndValue(linkFilepath, 'InstanceID', 'xmp.iid:' + generateUUID());
Чтобы добавить DocumentID
, вызовите функцию addXmpPropertyAndValue
следующим образом:
// The `linkFilepath` argument should be the filepath to the Link you want to update
addXmpPropertyAndValue(linkFilepath, 'DocumentID', 'xmp.did:' + generateUUID());
Дополнительное примечание:
При генерации значения (й) для DocumentID
и InstanceID
указывается состояние:
Идентификатор должен быть гарантированно глобально уникальным (на практике это означает, что вероятность столкновения настолько мала, что фактически невозможна). Обычно используются 128- или 144-битные числа, закодированные в виде шестнадцатеричных строк
Выдержку (см. Выше) можно найти на странице 19 из Руководство партнера по XMP для динамических носителей (PDF)
К сожалению, ExtendScript не предоставляет встроенную функцию для генерации глобального уникального идентификатора (GUID). Однако macOS включает uuidgen
, который является утилитой командной строки / библиотекой
генерация уникальных идентификаторов (UUID / GUID).
Вспомогательная функция (см. Выше):
function generateUUID() {
var cmd = 'do shell script "uuidgen | tr -d " & quoted form of "-"';
return app.doScript(cmd, ScriptLanguage.applescriptLanguage);
}
работает только на macOS. Он использует AppleScript для запуска команды uuidgen
.
Возможно, вы захотите сгенерировать идентификатор таким образом вместо текущего randomString(32)
вызова функции.