JSX/Photoshop: app.activeDocument.saveAs() 返回错误
JSX/Photoshop: app.activeDocument.saveAs() returning error
我正在尝试将 activeDocument
保存为 .psd 但它返回此错误
ERROR: General Photoshop error occurred. This functionality may not be available in this version of Photoshop.
我的脚本:
#target photoshop
var fileRef = new File(app.path.toString() + "/Samples/template.psd");
var docRef = open(fileRef);
//target text layer
var layerRef = app.activeDocument.layers.getByName("Text");
//user input
var newText = prompt("Editing " + layerRef.name, "enter new text: ");
//change contents
layerRef.textItem.contents = newText;
//save
var savePath = "/Samples/" + newText + ".psd";
var saveFile = new File(savePath);
var saveOptions = new PhotoshopSaveOptions();
saveOptions.alphaChannels = false;
saveOptions.annotations = false;
saveOptions.embedColorProfile = true;
saveOptions.layers = true;
saveOptions.spotColors = false;
app.activeDocument.saveAs(saveFile, saveOptions, true, Extension.LOWERCASE);
app.activeDocument.close();
基本上我想做的是,一遍又一遍地复制一个模板文件,只替换文本层的内容,然后将其保存在我在文本层中替换的字符串下。
非常感谢任何提示或帮助。
已解决
我通过变通解决了我的问题。我将脚本和模板文件都移到了 Photoshop 目录中,并将 app.path.toString()
添加到 saveFile
输出变量。所以好像需要把路径转成字符串再保存。
到目前为止,我还不确定如何在 Photoshop 目录之外工作,但对我来说这很有效,所以我很高兴。这相当粗糙,但我愿意接受建议。所以如果有人有类似的问题,他们可以参考这个。
#target photoshop
var loop = true;
var filePath = "/Samples/template.psd";
while(loop) {
openTemplate(filePath);
var layerRef = app.activeDocument.layers.getByName("Text"); //target text layer
var newText = prompt("Editing " + layerRef.name, "enter new text: "); //user input
if(newText == "stop") { //stop loop by entering 'stop'
loop = false;
}
layerRef.textItem.contents = newText;
var savePath = app.path.toString() + "/Samples/" + newText + ".psd";
var saveFile = new File(savePath);
savePSD(saveFile);
app.activeDocument.close(SaveOptions.DONOTSAVECHANGES);
}
function openTemplate(filePath) { //open template.psd
var fileRef = new File(app.path.toString() + filePath);
var docRef = open(fileRef);
}
function savePSD(saveFile) { //saveas newText.psd
var saveOptions = new PhotoshopSaveOptions();
saveOptions.alphaChannels = false;
saveOptions.annotations = false;
saveOptions.embedColorProfile = true;
saveOptions.layers = true;
saveOptions.spotColors = false;
app.activeDocument.saveAs(saveFile, saveOptions, true, Extension.LOWERCASE);
}
我怀疑您最初尝试的问题是您没有指定完整路径。我总是提供一个完整的路径——即使它只是一个像“/c/temp/myfile.psd”这样的临时位置。
我正在尝试将 activeDocument
保存为 .psd 但它返回此错误
ERROR: General Photoshop error occurred. This functionality may not be available in this version of Photoshop.
我的脚本:
#target photoshop
var fileRef = new File(app.path.toString() + "/Samples/template.psd");
var docRef = open(fileRef);
//target text layer
var layerRef = app.activeDocument.layers.getByName("Text");
//user input
var newText = prompt("Editing " + layerRef.name, "enter new text: ");
//change contents
layerRef.textItem.contents = newText;
//save
var savePath = "/Samples/" + newText + ".psd";
var saveFile = new File(savePath);
var saveOptions = new PhotoshopSaveOptions();
saveOptions.alphaChannels = false;
saveOptions.annotations = false;
saveOptions.embedColorProfile = true;
saveOptions.layers = true;
saveOptions.spotColors = false;
app.activeDocument.saveAs(saveFile, saveOptions, true, Extension.LOWERCASE);
app.activeDocument.close();
基本上我想做的是,一遍又一遍地复制一个模板文件,只替换文本层的内容,然后将其保存在我在文本层中替换的字符串下。
非常感谢任何提示或帮助。
已解决
我通过变通解决了我的问题。我将脚本和模板文件都移到了 Photoshop 目录中,并将 app.path.toString()
添加到 saveFile
输出变量。所以好像需要把路径转成字符串再保存。
到目前为止,我还不确定如何在 Photoshop 目录之外工作,但对我来说这很有效,所以我很高兴。这相当粗糙,但我愿意接受建议。所以如果有人有类似的问题,他们可以参考这个。
#target photoshop
var loop = true;
var filePath = "/Samples/template.psd";
while(loop) {
openTemplate(filePath);
var layerRef = app.activeDocument.layers.getByName("Text"); //target text layer
var newText = prompt("Editing " + layerRef.name, "enter new text: "); //user input
if(newText == "stop") { //stop loop by entering 'stop'
loop = false;
}
layerRef.textItem.contents = newText;
var savePath = app.path.toString() + "/Samples/" + newText + ".psd";
var saveFile = new File(savePath);
savePSD(saveFile);
app.activeDocument.close(SaveOptions.DONOTSAVECHANGES);
}
function openTemplate(filePath) { //open template.psd
var fileRef = new File(app.path.toString() + filePath);
var docRef = open(fileRef);
}
function savePSD(saveFile) { //saveas newText.psd
var saveOptions = new PhotoshopSaveOptions();
saveOptions.alphaChannels = false;
saveOptions.annotations = false;
saveOptions.embedColorProfile = true;
saveOptions.layers = true;
saveOptions.spotColors = false;
app.activeDocument.saveAs(saveFile, saveOptions, true, Extension.LOWERCASE);
}
我怀疑您最初尝试的问题是您没有指定完整路径。我总是提供一个完整的路径——即使它只是一个像“/c/temp/myfile.psd”这样的临时位置。