2013-01-17 2 views
8

나는 ExtendScript를 사용하여 JavaScript로 Photoshop 스크립트 작업을하고 있습니다. 내 스크립트는 일부 사용자 입력을 허용하고, 그것을 사용하는 사이에 저장하고 싶습니다. 즉, 특정 키 아래에 단순한 문자열이나 숫자 값을 저장하는 방법을 찾고 있으므로 스크립트의 후속 사용에서이 문자열에 액세스 할 수 있습니다. 간단히 말해, 스크립트에 대한 환경 설정을 저장하려고합니다. 어떻게해야합니까?Photoshop 스크립트에서 사용자 별 또는 문서 별 환경 설정 저장

문서 당 기준으로 적어도 일부 환경 설정을 저장하는 것이 더 좋을 수도 있습니다. 그게 가능하니? 즉, 문서에 임의의 비트 데이터를 저장할 수 있습니까?

+0

어쩌면 https://indisnip.wordpress.com/2010/09/07/storing-custom -data-into-indesign-file-xmp/여기에도 적용됩니까? –

답변

10

당신은 포토샵을 통해 지속 기본 매개 변수를 저장하는 사용자 지정 옵션을/넣어 사용할 얻을 수는 시작 :

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)]; 
} 
+0

예제를 편집하여 동일한 설명 자에 여러 값을 표시합니다. –

+0

indesign에서 작동하는 솔루션을 찾을 때 다른 사람이이를 발견 한 경우 : app.insertLabel 및 app.extractLabel을 사용하여 환경 설정을 저장할 수 있습니다 – ChristophK

4

몇 가지 옵션이 있습니다. 텍스트 파일을 생성하고 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 객체가 없습니다.

0

문서 별 설정의 경우 XMP 메타 데이터를 사용하는 것이 좋습니다. 여기에 예제 스 니펫 (http://forums.adobe.com/thread/790973)이 있습니다. Paul Riggott의 링크에서 제안한 것처럼 AdobeXMPScript 라이브러리를 사용하여 자신의 네임 스페이스를 만들 수 있습니다.