2011-06-25 15 views
10

मैंने Photoshop CS5 Scripting Guide and Photoshop CS5 JavaScript Reference पर एक नज़र डाली, लेकिन मुझे सादे पाठ फ़ाइल में टेक्स्ट लिखने का कोई तरीका नहीं मिला। क्या उसे करने का कोई तरीका है?फ़ोटोशॉप जावास्क्रिप्ट द्वारा टेक्स्ट फ़ाइल में टेक्स्ट कैसे लिखें?

मैं किसी दस्तावेज़ में प्रत्येक परत ऑब्जेक्ट के bounds का मान रिकॉर्ड करना चाहता हूं।

कोई संकेत?

उत्तर

7

फ़ाइल सिस्टम का उपयोग Adobe के JavaScript Tools Guide (PDF) में प्रलेखित किया गया है।

पीडीएफ फाइल डाउनलोड करें और "फाइल सिस्टम एक्सेस" अनुभाग देखें।

+0

धन्यवाद! मैं में फ़ाइल मिली/अनुप्रयोग/उपयोगिताएँ/एडोब उपयोगिताएँ-CS5.localized/ExtendScript टूलकिट CS5/एसडीके – torus

+3

स्रोत कोड दस्तावेजों के हजारों के लायक है। –

14

यह मेरे लिए काम करता है, मूल दस्तावेज के रूप में एक ही नाम के साथ पाठ बचाता है, लेकिन विस्तार 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(); 
} 

मैं नहीं जानता कि यह कैसे काम करता, फ़ोटोशॉप पटकथा एक बड़ी गड़बड़ है, मैं बस रखा कुछ स्क्रिप्ट्स को मिलाकर मिला जो मैंने पाया जब तक कि यह काम नहीं करता।

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

मैं कमी डॉक्स पाया, लेकिन बना सकते हैं और एक को लिखने के लिए एक विधि के रूप में इस के साथ आया था:

इसके अलावा, अगर किसी को भी इस की जरूरत है, यहाँ एक स्क्रिप्ट है कि यह भी png छवि के रूप में सक्रिय दस्तावेज़ बचाता है 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

यहाँ आप क्या जरूरत है: यह बहुत बुनियादी है। यह परतों पर लूप होगा (कोई परत नहीं !!) और प्रत्येक परत के लिए परत नाम और परत सीमाओं को बचाएं।

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

मैंने दस्तावेज़ों को पढ़ा है और मनोविज्ञान ब्रॉम और corrin_m के उत्तर के सर्वोत्तम भागों को जोड़ा है।
मेरा उत्तर भी त्रुटियों के लिए जांच करता है।

यदि यह मौजूद है तो फ़ाइल को हटाना आवश्यक नहीं है क्योंकि "w" के साथ खोलने से मौजूदा फ़ाइल को ओवरराइट कर दिया जाएगा।

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

इस तरह मैं अपने लिपियों में समारोह का उपयोग कर रहा

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

BTW मैं commom-code.jsx कहा जाता है और मैं लाइन निम्नलिखित (एकल लाइन के साथ शामिल कर सकते हैं अलग फ़ाइल में इस रख रहा हूँ टिप्पणियां जानबूझकर हैं)।

// @include 'common-code.jsx'