2011-06-25 85 views

Trả lời

7

Truy cập hệ thống tệp được ghi lại trong số JavaScript Tools Guide (PDF) của Adobe.

Tải xuống tệp PDF và kiểm tra phần "Truy cập hệ thống tệp".

+0

Cảm ơn! Tôi tìm thấy tập tin trong/Applications/Utilities/Adobe Utilities-CS5.localized/ExtendScript Toolkit CS5/SDK – torus

+3

Mã nguồn có giá trị hàng ngàn tài liệu. –

14

này làm việc cho tôi, tiết kiệm văn bản với tên giống như tài liệu gốc, nhưng với phần mở rộng 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(); 
} 

Tôi không biết làm thế nào nó hoạt động, photoshop scripting là một mớ hỗn độn khổng lồ, tôi chỉ giữ trộn cùng một vài kịch bản mà tôi tìm thấy cho đến khi nó hoạt động.

Ngoài ra, nếu có ai cần này, đây là một kịch bản mà còn tiết kiệm tài liệu hoạt động như png ảnh:

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

tôi tìm thấy các tài liệu thiếu nhưng đến với điều này như một phương pháp để tạo ra và ghi vào một tệp mới trong 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

Đây là những gì bạn cần: Nó khá cơ bản. Nó sẽ lặp qua các lớp (không có lớp nào !!) và lưu tên lớp và lớp giới hạn cho mỗi lớp.

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

Tôi đã đọc tài liệu và kết hợp các phần tốt nhất của câu trả lời của tâm lý và câu trả lời của corrin_m.
CÂU TRẢ LỜI CỦA TÔI C CHNG C CHNG CHO L ERI.

Không cần xóa tệp nếu nó tồn tại vì mở bằng "w" sẽ ghi đè lên tệp hiện có.

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

Đây là cách tôi đang sử dụng các chức năng trong các kịch bản của tôi

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

BTW Tôi giữ này trong tập tin riêng biệt gọi là commom-code.jsx và tôi có thể bao gồm nó với sau dòng (dòng đơn ý kiến ​​là cố ý).

// @include 'common-code.jsx'  
Các vấn đề liên quan