2011-06-25 13 views

Odpowiedz

7

Dostęp do systemu plików jest udokumentowany w wersji JavaScript Tools Guide (PDF) firmy Adobe.

Pobierz plik PDF i sprawdź sekcję "Dostęp do systemu plików".

+0

Dzięki! Znalazłem ten plik w katalogu/Programy/Narzędzia/Adobe Media-CS5.localized/ExtendScript Toolkit CS5/SDK – torus

+3

Kod źródłowy jest warte tysiące dokumentacji. –

14

Działa to dla mnie, zapisuje tekst o tej samej nazwie co oryginalnego dokumentu, ale z rozszerzeniem txt:

function saveTxt(txt) 
{ 
    var Name = app.activeDocument.name.replace(/\.[^\.]+$/, ''); 
    var Ext = decodeURI(app.activeDocument.name).replace(/^.*\./,''); 
    if (Ext.toLowerCase() != 'psd') 
     return; 

    var Path = app.activeDocument.path; 
    var saveFile = File(Path + "/" + Name +".txt"); 

    if(saveFile.exists) 
     saveFile.remove(); 

    saveFile.encoding = "UTF8"; 
    saveFile.open("e", "TEXT", "????"); 
    saveFile.writeln(txt); 
    saveFile.close(); 
} 

Nie wiem, jak to działa, photoshop skryptowy jest ogromny bałagan, ja po prostu przechowywane mieszanie razem kilku skryptów, które znalazłem, aż zadziałały.

Także, jeśli ktoś tego potrzebuje, o to skrypt, który także zapisuje aktywny dokument jako png obrazu:

function savePng() 
{ 
    var Name = app.activeDocument.name.replace(/\.[^\.]+$/, ''); 
    var Ext = decodeURI(app.activeDocument.name).replace(/^.*\./,''); 
    if (Ext.toLowerCase() != 'psd') 
     return; 

    var Path = app.activeDocument.path; 
    var saveFile = File(Path + "/" + Name +".png"); 

    if(saveFile.exists) 
     saveFile.remove(); 

    var o = new ExportOptionsSaveForWeb(); 
     o.format = SaveDocumentType.PNG; 
     o.PNG8 = false; 
     o.transparency = true; 
     o.interlaced = false; 
     o.includeProfile = false; 
    activeDocument.exportDocument(saveFile, ExportType.SAVEFORWEB, o); 
} 
4

znalazłem w dokumentacji brakuje ale wymyślił tę metodę, aby utworzyć i zapisać do nowy plik w CS6:

var s = "My string data here"; 
var file = new File(); 
var fileNew = file.saveDlg("Save new file"); 
fileNew.open("w"); 
fileNew.write(s); 
fileNew.close(); 
2

Oto co trzeba: To całkiem proste. Będzie pętla nad warstwami (bez zestawów warstw !!) i zapisze nazwę warstwy i granice warstw dla każdej warstwy.

app.preferences.rulerUnits = Units.PIXELS; 
var srcDoc = app.activeDocument; 
var numOfLayers = srcDoc.layers.length; 
var results = ""; 
var fileName = srcDoc.name; 
var docName = fileName.substring(0,fileName.length -4) 
var theFile = srcDoc.path + "/" + docName + ".txt"; 

for (var i = 0; i < numOfLayers ; i++) 
{ 
    var theLayer = srcDoc.layers[i]; 
    var lb = getLayerBounds(theLayer).toString(); 
    results += theLayer.name + ": " + lb + "\n"; 
} 

writeTextFile(theFile, results) 
alert(results); 

function getLayerBounds(alayer) 
{ 
    var x1 = parseFloat(alayer.bounds[0]) 
    var y1 = parseFloat(alayer.bounds[1]) 
    var x2 = parseFloat(alayer.bounds[2]) 
    var y2 = parseFloat(alayer.bounds[3]) 
    return [x1,y1,x2,y2] 
} 

function writeTextFile(afilename, output) 
{ 
    var txtFile = new File(afilename); 
    txtFile.open("w"); // 
    txtFile.writeln(output); 
    txtFile.close(); 
} 
3

Przeczytałem dokumenty i połączyłem najlepsze części odpowiedzi psycho brm i corrin_m.
MÓJ ODPOWIEDŹ TAKŻE KONTROLE BŁĘDÓW.

Nie trzeba usuwać plików, jeśli istnieje, ponieważ otwarcie za pomocą "w" spowoduje nadpisanie istniejącego pliku.

/* ======================================================= 
* Saves file as text. Overwrites old file if exists. 
* Returns empty string if no errors, otherwise error message. 
* =======================================================*/ 
function saveAsTextFile(filePath, content) { 
    var saveFile = new File(filePath); 

    saveFile.encoding = "UTF8"; 
    saveFile.open("w"); 
    if (saveFile.error != "") 
     return saveFile.error; 

    saveFile.write(content); 
    if (saveFile.error != "") 
     return saveFile.error; 

    saveFile.close(); 
    if (saveFile.error != "") 
     return saveFile.error; 

    return ""; 
} 

ten sposób używam funkcji w moich skryptów

error = saveAsTextFile(filePath, content); 
if (error === "") { 
    alert(filePath + " saved OK."); 
} 
else { 
    alert("Error saving " + filePath + "\n" + error); 
} 

BTW jestem utrzymując to w osobnym pliku o nazwie commom-code.jsx i mogę umieścić go z poniższej linii (jednej linii komentarze są zamierzone).

// @include 'common-code.jsx'  
Powiązane problemy