JSX/Photoshop: app.activeDocument.saveAs() връща грешка

Опитвам се да запазя activeDocument като .psd, но връща тази грешка

ГРЕШКА: Възникна обща грешка на Photoshop. Тази функционалност може да не е налична в тази версия на 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();

това, което искам да направя, е основно да дублирам файл с шаблон отново и отново, като само заменям съдържанието на текстов слой, след което го запазвам под низа, който замествам в текстовия слой.

всички съвети или помощ са високо оценени.


person Dylan    schedule 15.02.2015    source източник


Отговори (2)


Разрешено

Поправих проблема си, като го заобиколих. Преместих както скрипта, така и файла с шаблона в директорията на 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);
}
person Dylan    schedule 15.02.2015

Подозирам, че проблемът с първоначалния ви опит е, че не посочвате пълен път. Винаги предоставям пълен път - дори ако е само до временно местоположение като '/c/temp/myfile.psd'.

person Anna Forrest    schedule 15.02.2015