【问题标题】:How to write inresponse in indesign scripts如何在 indesign 脚本中编写无响应
【发布时间】:2014-08-09 19:30:56
【问题描述】:

我正在运行这个脚本来获取 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

【问题讨论】:

    标签: adobe-indesign run-script indesign-server


    【解决方案1】:

    您似乎想要返回一个表单字段名称数组。您可以利用 javascript 中的 everyItem() 集合接口方法:

    var result = myDocument.formFields.everyItem().name;
    result;
    

    javascript 将返回被调用脚本中的最后一个值,所以为了清楚起见,最后一行就是要返回的值。

    在 Java 端,runScript 方法将结果变量作为第四个参数传递,您可以在此处找到响应。所以,在你的代码 sn-p 之后,你可能会有这样的东西:

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

    【讨论】:

      猜你喜欢
      • 2011-11-30
      • 1970-01-01
      • 2013-02-21
      • 1970-01-01
      • 2016-07-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多