#adobe-indesign #run-script #indesign-server
#adobe-indesign #выполнить-скрипт #indesign-сервер
Вопрос:
Я запускаю этот скрипт для получения всех полей формы indd-файла.
var _ALL_FIELDS = "";
var allFields = myDocument.formFields;
for(var i=0;i<allFields.length;i ){
var tf = allFields[i];
alert(tf.id);
alert(tf.label);
alert(tf.name);
alert(_ALL_FIELDS = _ALL_FIELDS "," tf.name);
}
Что я сделал, так это создал клиент на основе soap-java и вызвал метод runscript.
Теперь я могу получить эти поля, но как отправить эти поля обратно клиенту, т.Е. Как написать это в ответ, а затем на стороне клиента, как прочитать его из ответа.
Код для вызова метода runscript:-
Service inDesignService = new ServiceLocator();
ServicePortType inDesignServer = inDesignService.getService(new URL(parsedArgs.getHost()));
IntHolder errorNumber = new IntHolder(0);
StringHolder errorString = new StringHolder();
DataHolder results = new DataHolder();
inDesignServer.runScript(runScriptParams, errorNumber, errorString, results);
Также я нашел в документах, которые возвращает метод RunScript RunScriptResponse
, но в моем случае он возвращает void.
http://wwwimages.adobe.com/content/dam/Adobe/en/devnet/indesign/sdk/cs6/server/ids-solutions.pdf
Ответ №1:
Похоже, вы хотите вернуть массив имен полей формы. Вы могли бы воспользоваться преимуществами метода интерфейса сбора everyItem() в вашем javascript:
var result = myDocument.formFields.everyItem().name;
resu<
Javascript вернет последнее значение в вызываемом скрипте, поэтому, чтобы было совершенно очевидно, последняя строка — это просто возвращаемое значение.
На стороне Java метод RunScript передает переменную results в качестве 4-го параметра, и именно там вы найдете свой ответ. Итак, после вашего фрагмента кода у вас может быть что-то вроде этого:
List<String> formFieldNames = new ArrayList<String>();
if (results.value.getData() != null) {
Data[] resultsArray = (Data[]) results.value.getData();
for (int i = 0; i < resultsArray.length; i ) {
formFieldNames.add(resultsArray[i].getData().toString());
}
}