我正在使用ExtendScript在JavaScript中處理Photoshop腳本。我的腳本允許一些用戶輸入,並且我想在兩次使用之間保存它。也就是說,我正在尋找一種方法來保存特定鍵下的簡單字符串或數字值,以便在後續使用腳本時能夠訪問它。簡而言之,我想保存對我的腳本的偏好。我怎麼做?在Photoshop腳本中保存每個用戶或每個文檔首選項
更好的是能夠在每個文檔的基礎上至少保存一些偏好。那可能嗎?也就是說,我可以在文檔中存儲任意位的數據嗎?
我正在使用ExtendScript在JavaScript中處理Photoshop腳本。我的腳本允許一些用戶輸入,並且我想在兩次使用之間保存它。也就是說,我正在尋找一種方法來保存特定鍵下的簡單字符串或數字值,以便在後續使用腳本時能夠訪問它。簡而言之,我想保存對我的腳本的偏好。我怎麼做?在Photoshop腳本中保存每個用戶或每個文檔首選項
更好的是能夠在每個文檔的基礎上至少保存一些偏好。那可能嗎?也就是說,我可以在文檔中存儲任意位的數據嗎?
您可以使用PUT/GET定製選項來保存跨Photoshop的持續偏好參數啓動:
const kMyFlag = app.stringIDToTypeID("myFlag");
const kMyNumber = app.stringIDToTypeID("myNumber");
const kMySettings = "mySettings";
function saveSettings()
{
var desc = new ActionDescriptor();
desc.putBoolean(kMyFlag, true);
desc.putInteger(kMyNumber, 42);
// "true" means setting persists across Photoshop launches.
app.putCustomOptions(kMySettings, desc, true);
}
function getSettings()
{
var desc = app.getCustomOptions(kMySettings);
return [desc.getBoolean(kMyFlag), desc.getInteger(kMyNumber)];
}
編輯示例以在同一個描述符上顯示多個值。 –
只是爲了防止其他人在尋找適用於indesign的解決方案時發現此問題:您可以使用app.insertLabel和app.extractLabel來存儲您的首選項 – ChristophK
你有一些選擇。你可以創建一個文本文件,並使用File
對象寫它:
var prefs = new File("~/desktop/prefs.txt");
prefs.open("w"); // or "a" to append
prefs.writeln("user:lenny;favorite_color:ff6600;likes:sunsets;");
...如果你想你的喜好綁在腳本本身。
如果你想每個文檔的喜好,你可以寫一個字符串的文件你的工作的元數據字段的一個使用Document.info
像這樣(使用「說明」字段,但你可以使用任何可寫域):
var doc = app.activeDocument;
doc.info.instructions = "user:lenny;favorite_color:ff6600;likes:sunsets;";
//alert(doc.info.instructions); // see, it works!
至於如何真正格式化字符串,你可以像做一個簡單的配置文件那樣做,或者如果你有一個複雜的用戶偏好對象,你可以使用XML
對象來構造和序列化它。 JSON對此很好,但不幸的是,Extendscript中沒有JSON對象。
對於每個文檔的首選項,我建議使用XMP元數據。你可以在這裏找到示例代碼片段:http://forums.adobe.com/thread/790973。您可以利用AdobeXMPScript庫創建您自己的名稱空間,就像Paul Riggott的鏈接中所建議的那樣。
也許https://indisnip.wordpress.com/2010/09/07/storing-custom -data-into-indesign-file-xmp /這裏也適用? –