如何通过Photoshop JavaScript将文本写入文本文件?

如何通过Photoshop JavaScript将文本写入文本文件?,javascript,photoshop,photoshop-script,Javascript,Photoshop,Photoshop Script,我看了一下,但找不到将文本写入纯文本文件的方法。有办法吗 我想在文档中记录每个层对象的bounds值 有什么提示吗?文件系统访问记录在Adobe的 下载PDF文件并查看“文件系统访问”部分。这对我来说很有效,它使用与原始文档相同的名称保存文本,但扩展名为txt: function saveTxt(txt) { var Name = app.activeDocument.name.replace(/\.[^\.]+$/, ''); var Ext = decodeURI(app.a

我看了一下,但找不到将文本写入纯文本文件的方法。有办法吗

我想在文档中记录每个层对象的
bounds


有什么提示吗?

文件系统访问记录在Adobe的


下载PDF文件并查看“文件系统访问”部分。

这对我来说很有效,它使用与原始文档相同的名称保存文本,但扩展名为
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();
}
我不知道它是如何工作的,photoshop脚本是一个巨大的混乱,我只是不断地把我发现的一些脚本混合在一起,直到它工作

另外,如果有人需要,这里有一个脚本,它还可以将活动文档另存为
png
image:

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);
}

我发现缺少文档,但提出了一种在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();
以下是您需要的: 这很基本。它将在层上循环(没有层集!!),并保存每个层的层名和层边界

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();
}
app.preferences.rulerUnits=Units.PIXELS;
var srcDoc=app.activeDocument;
var numOfLayers=srcDoc.layers.length;
var结果=”;
var fileName=srcDoc.name;
var docName=fileName.substring(0,fileName.length-4)
var theFile=srcDoc.path+“/”+docName+“.txt”;
对于(var i=0;i
我已经阅读了这些文档,并结合了psycho brm和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);
}
顺便说一句,我把它保存在一个名为common-code.jsx的单独文件中,我可以在下面一行中包含它(单行注释是有意的)


谢谢我在/Applications/Utilities/Adobe Utilities-CS5.localized/ExtendScript Toolkit CS5/SDK中找到了该文件
// @include 'common-code.jsx'