2011-06-25 24 views

Respuesta

7

El acceso al sistema de archivos está documentado en el JavaScript Tools Guide (PDF) de Adobe.

Descargue el archivo PDF y consulte la sección "Acceso al sistema de archivos".

+0

Gracias! He encontrado el archivo en/Aplicaciones/Utilidades/Adobe Utilidades-CS5.localized/ExtendScript Toolkit CS5/SDK – torus

+3

El código fuente es un valor de miles de documentaciones. –

14

Esto funciona para mí, ahorra texto con el mismo nombre que el documento original, pero con extensión 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(); 
} 

no sé cómo funciona, scripting Photoshop es un gran lío, yo seguí mezclando algunos scripts que encontré hasta que funcionó.

Además, si alguien necesita esto, aquí es un script que también ahorra documento activo como png imagen:

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

encontré los documentos que carecen pero ocurrió esto como un método para crear y escribir en una nuevo archivo en 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

Esto es lo que necesita: es bastante básico. Pasará por las capas (¡sin conjuntos de capas!) Y guardará el nombre de la capa y los límites de capa para cada capa.

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

He leído los documentos y las mejores partes de m ancho de psico y la respuesta de corrin_m combinado.
MI RESPUESTA TAMBIÉN REVISE LOS ERRORES.

No es necesario eliminar el archivo si existe porque al abrir con "w" sobrescribirá el archivo existente.

/* ======================================================= 
* 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 ""; 
} 

Esta es la forma en que estoy usando la función en mis guiones

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

Por cierto estoy teniendo esto en archivo separado llamado común, conviene-code.jsx y puedo incluirlo con la siguiente línea (línea única los comentarios son intencionales).

// @include 'common-code.jsx'  
Cuestiones relacionadas