2011-09-27 19 views
11

Soy un desarrollador interno de una empresa de impresión.¿Es posible llamar a un servicio web con Indesign javascript?

Utilizamos Adobe Indesign CS3 y CS5 para crear documentos para imprimir.

Creé un script en Adobe Extendscript que crea un documento de Indesign y maneja algunas conversiones básicas cuando el cliente no lo hace.

He utilizado Javascript para escribir este guión.

¿Es posible llamar a un servicio web a través de una secuencia de comandos?

Si es así, ¿cómo?

Si no, ¿cuál sería la mejor manera de llamar a un servicio web desde el escritorio?

Gracias.

+1

Por favor, deje críticas constructivas sobre cómo esta es una mala pregunta antes simplemente de downvoting. Soy relativamente nuevo aquí y simplemente busco ayuda, tratando de hacer mis preguntas de la manera más clara posible. – story

+0

... ¿estás hablando de llamar a un w desde un documento de autoedición? – vector

+0

Esencialmente, sí. Necesito llamar a un ws desde Adobe Indesign CS3 - CS5, aunque el plan no requiere que se abra un documento aún cuando se llama al script. – story

Respuesta

4

No y Sí.

No, no hay forma (afaik) de hacer que InDesign llame a un servicio web desde un script. Es muy posible y, a menudo, se hace desde los complementos de InDesign (puede ejecutar código arbitrario de C++ para que pueda hacer lo que quiera). Sin embargo, es una bestia completamente diferente de aprender.

Sí, es posible hacerlo desde ExtendScript utilizando una biblioteca. Así que, básicamente, su secuencia de comandos llamaría al servicio web para obtener datos (tal vez usando parámetros obtenidos de InDesign o del documento) y luego enviaría los valores devueltos a otras funciones de script de InDesign para realizar las operaciones.

Se puede encontrar una muestra básica here que usa 'Extendables'.

EDITAR: Ya que parece haber alguna confusión: los documentos no son los que ejecutan el script y muy raramente incluso los contienen. Los scripts se guardan en un formato de JavaScript específico de InDesign (.jsx) e interpretados por el motor de scripts InDesign.

+0

Estoy sin palabras. Esta biblioteca Extendables es brillante. Esto es exactamente lo que necesitaba. ¡Gracias! Me gustaría más uno varias veces si pudiera. – story

+1

Extendibles parece haberse convertido en porky: http://porky.io/ – Ben

+0

@Ben, gracias por la información sobre porky. Al examinar brevemente la base de código, no creo que el porky sea Extendables. Es posible que compartan algunas funcionalidades comunes, pero están estructurados de manera diferente y, a veces, tienen diferentes propósitos. porky parece ser un conector DB (web) para ExtendScript con algunos extras. Extendables es un marco de prueba para ExtendScript con algunos extras. – David

0

... probablemente si usa InDesign para crear un pdf del documento. En el pdf, probablemente puedas. Pero desde el documento de InDesign sin procesar, probablemente no. También votaría que no podrá ejecutar js del documento antes de que esté abierto. Sugeriría hablar con expertos de InDesign. Sin embargo, tengo curiosidad por saber qué se te ocurrirá, ya que recuerdo que esa identificación te permite incluir interactividad en el documento. Por favor, publique de nuevo si encuentra su respuesta en otro lugar.

+0

JS?Entonces sí, probablemente puedas, te preguntes si podrías incluir toda la jQuery lib en el documento :-), haz una llamada Ajax. – vector

+0

Hmm, me pregunto también. Eso puede ser interesante. – story

+0

pruébalo, mira lo que sucede. Periódico auto formateado :-) – vector

6

Extendables ya se ha mencionado:

Extendables

No es jQuery, sino que es una biblioteca de secuencias de comandos para InDesign.

La discusión más completa se encuentra en Rorohiko's blog, con un buen ejemplo directo.

+0

Gracias, esto fue extremadamente útil. +1 por genialidad – story

0

Además Extendables, hay 2 opciones alternativas:

Adobe Bridge/BridgeTalk

No se puede decir para las versiones específicas de la suite de Adobe, pero si se puede usar o tener Adobe Bridge/BridgeTalk , puede utilizar la comunicación de aplicaciones cruzadas de Adobe y la clase HttpConnection disponible para Bridge (según el documento SDK), y hacer que InDesign llame a Bridge para realizar la solicitud HTTP y devolver los resultados a InDesign.

No tengo un ejemplo específico para InDesign, pero esto es algo para Illustrator. Asumiría que sería portar a InDesign fácilmente.

https://gist.github.com/daluu/2d9dec72d0863f9ff5a7

https://gist.github.com/mericson/6509997

Hacer llamadas de servicio web externa e interfaz para ExtendScript

motor API de scripting de Adobe no es estrictamente ExtendScript/Javascript. También puede usar la API de script desde COM/VBScript (en Windows) o Applescript (en Mac), que se ejecuta de forma externa a InDesign pero interactúa con InDesign a través de la API.

Para Windows, por COM, me refiero a cualquier lenguaje compatible con COM, por lo que no es solo el VBScript predeterminado (puede ser Python, Perl, PHP, Java, .NET, incluso Microsoft JScript; su versión de Javascript para la línea de comandos/escritorio/etc.).

Al usar la API de scripts en un motor diferente, realiza la llamada de servicio web externamente desde otro idioma (VBScript, Applescript, etc.) y luego pasa los resultados al ExtendScript mediante la API de scripts (en COM/Applescript) de application.doScript ('ExtendScript code snippet here') (o doJavascript) donde para ExtendScript snippet, podría ser un fragmento corto que usa ExtendScript incluye incluir un archivo JSX real y luego llamar a una función/método ExtendScript, pasando los resultados del servicio web como argumentos.

Un ejemplo de esta técnica (no cubre la parte llamada de servicio web) se describe aquí en algunas de las soluciones:

Is it possible to execute JSX scripts from outside ExtendScript?

1

También puede llamar AppleScript o VB función del sistema operativo y utilizar algunos utilidad de línea de comandos como cUrl para llamar a su servicio web. También puedes probar getUrl, un script gratuito de Rorohiko que facilita la comunicación web dentro de ExtendScript.

Cuestiones relacionadas