2014-06-19 13 views
1

이 스크립트를 실행하여 indd 파일의 모든 양식 필드를 가져옵니다.indesign 스크립트에서 응답을 작성하는 방법

내가 한 것은 비누 자바 기반 클라이언트를 만들고 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을 반환하지만 내 경우에 무효 반환있어 문서에서 발견했다. 당신이 양식 필드 이름의 배열을 반환하려면 같은

http://wwwimages.adobe.com/content/dam/Adobe/en/devnet/indesign/sdk/cs6/server/ids-solutions.pdf

답변

2

는 것 같습니다.

가, 마지막 줄은 단지 값, 호출 된 스크립트의 마지막 값을 반환합니다, 그래서 그냥 완전히 명백하기 위해 자바 스크립트입니다

var result = myDocument.formFields.everyItem().name; 
result; 
: 당신은 당신의 자바 스크립트에서 everyItem() 수집 인터페이스 방법을 활용할 수있다 반환 될

자바 측에서는 runScript 메소드가 결과 변수를 네 번째 매개 변수로 전달하므로 여기에서 응답을 찾을 수 있습니다. 따라서 코드 스 니펫 뒤에 다음과 같이 입력하십시오.

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