如何通过Photoshop JavaScript将文本写入文本文件
How to write text to a text file by Photoshop JavaScript?
我看了Photoshop CS5 Scripting Guide和Photoshop CS5 JavaScript Reference,但找不到将文本写入纯文本文件的方法。有办法做到这一点吗?
我想在文档中记录每个层对象的bounds
的值。
有什么提示吗?
这对我很有效,保存的文本与原始文档同名,但扩展名为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
图像:
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);
}
我已经阅读了文档,并结合了psychobrm和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的单独文件中,我可以用下面的一行包含它(单行注释是有意的)。
// @include 'common-code.jsx'
文件系统访问记录在Adobe的JavaScript Tools Guide(PDF)中。
下载PDF文件并查看"文件系统访问"部分。
以下是您需要的:这很基本。它将在层上循环(没有层集!!),并保存每个层的层名称和层边界。
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();
}
我发现缺少文档,但提出了在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();
相关文章:
- 使用不带文本文件的OpenLayers显示POI
- 使用javascript从文本文件中获取值
- 从javascript中的文本文件中获取值
- 在移动浏览器上显示大型文本文件
- 搜索文本文件并附加到表中
- 将文本文件加载到javascript中
- Angular http.get没有'我不喜欢在开头和结尾加方括号的文本文件
- 一个javascript实现base64图像编码并将结果写入文本文件
- 用javascript读取文本文件的第一行
- 从文本文件js中读取列表
- 使用JavaScript将压缩文本文件加载到字符串中
- 数组在手动写入时有效,但从文本文件加载时无效
- 在浏览器中打开文本文件-服务器上出现错误
- html表单,它有文本和表,现在我想在一个简单的文本文件中保存和检索数据,如何实现它
- 任何编写文本文件并将其替换为上一个文本文件的方法
- html或java脚本代码在硬盘中创建一个文本文件
- Firefox插件:保存到文本文件的HTTP日志,其中包含时间、用户名、计算机名;t创建文本文件
- 从文本文件加载jsondata时出现空白页
- 如何在不干扰电子邮件通知的情况下将眼镜保存在文本文件中
- 使用javascript创建新的文本文件(),但存储[objectFile]而不是文本