2011-09-27 2 views
11

Je suis un développeur interne pour une entreprise d'impression.Est-il possible d'appeler un service web avec Indesign javascript?

Nous utilisons Adobe Indesign CS3 et CS5 pour créer des documents à imprimer.

J'ai créé un script dans Adobe Extendscript qui crée un document Indesign et gère certaines conversions de base lorsque le client ne le fait pas lui-même.

J'ai utilisé Javascript pour écrire ce script.

Est-il possible d'appeler un service Web via un tel script?

Si oui, comment? Si ce n'est pas le cas, quelle serait la meilleure façon d'appeler un service Web à partir du bureau?

Merci.

+1

S'il vous plaît laissez des critiques constructives sur la façon dont c'est une mauvaise question avant de simplement downvoting. Je suis relativement nouveau ici et je cherche simplement de l'aide, en essayant de poser mes questions aussi clairement que possible. – story

+0

... parlez-vous de l'appel d'un ws à partir d'un document de publication assistée par ordinateur? – vector

+0

Essentiellement, oui. J'ai besoin d'appeler un ws depuis Adobe Indesign CS3 - CS5, bien que le plan ne nécessite pas encore l'ouverture d'un document lors de l'appel du script. – story

Répondre

4

Non et Oui. Non, il n'y a aucun moyen (afaik) pour que InDesign appelle un service Web à partir d'un script. C'est très possible et souvent fait à partir de plugins InDesign (vous pouvez exécuter du code C++ arbitraire pour pouvoir faire n'importe quoi). Cependant, c'est une bête entièrement différente à apprendre.

Oui, il est possible de faire avec ExtendScript en utilisant une bibliothèque. Donc, fondamentalement, votre script appelle le service Web pour obtenir des données (peut-être en utilisant des paramètres obtenus à partir d'InDesign ou du document), puis envoie les valeurs renvoyées dans d'autres fonctions de script InDesign pour effectuer les opérations.

Un exemple de base peut être trouvé here qui utilise 'Extendables'.

EDIT: Comme il semble y avoir une certaine confusion: Les documents ne sont pas ceux qui exécutent le script et très rarement les contiennent. Les scripts sont sauvegardés dans un format Javascript spécifique à InDesign (.jsx) et interprétés par le moteur de script InDesign.

+0

Je suis sans voix. Cette bibliothèque Extendables est géniale. C'est exactement ce dont j'avais besoin. Je vous remercie! Je serais plus un fois plusieurs fois si je le pouvais. – story

+1

Extendibles semble être devenu porky: http://porky.io/ – Ben

+0

@Ben, merci pour la pointe sur Porky. Brièvement en regardant le code, je ne pense pas que Porky était Extendables. Ils peuvent partager certaines fonctionnalités communes, mais ils sont structurés différemment et servent parfois des objectifs différents. Porky semble être un connecteur (web) DB pour ExtendScript avec quelques extras. Extendables est un framework de test pour ExtendScript avec quelques extras. – David

0

... probablement si vous utilisez InDesign pour créer un document PDF à partir du document. Dans le pdf, vous pouvez probablement. Mais à partir du doc ​​InDesign brut probablement pas. Je voterais aussi que vous ne pourrez pas exécuter js du document avant qu'il ne soit ouvert. Je suggère de prendre cela avec des experts InDesign. Cependant, je suis curieux de savoir ce que vous allez trouver, car je me souviens que l'identification vous permet d'inclure l'interactivité dans le document. Veuillez poster si vous trouvez votre réponse ailleurs.

+0

JS?Alors oui, vous pouvez probablement vous demander si vous pouvez inclure toute la librairie jQuery dans le doc :-), faites un appel Ajax. – vector

+0

Hmm, je me demande aussi. Ce serait intéressant. – story

+0

l'essayer, voir ce qui se passe. Auto-formatage journal :-) – vector

6

Extendables a déjà été mentionné:

Extendables

Il n'est pas jQuery, il est plutôt une bibliothèque pour scripts InDesign.

La discussion la plus complète se trouve à Rorohiko's blog, avec un bel exemple simple.

+0

Merci, c'était extrêmement utile. +1 pour awesomeness. – story

0

En plus Extendables, il y a 2 autres options:

Adobe Bridge/BridgeTalk

ne peux pas dire pour des versions spécifiques de la suite Adobe, mais si vous pouvez utiliser ou avoir Adobe Bridge/BridgeTalk , vous pouvez utiliser la classe de communication croisée et la classe HttpConnection d'Adobe disponibles pour Bridge (conformément au document SDK), et InDesign appelle Bridge pour effectuer la requête HTTP et renvoyer les résultats à InDesign.

Je n'ai pas d'exemple spécifique pour InDesign, mais voici quelques exemples pour Illustrator. Je suppose qu'il serait port vers InDesign facilement.

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

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

service Make Web appels à l'extérieur et de l'interface à ExtendScript

moteur API de script d'Adobe n'est pas strictement ExtendScript/Javascript. Vous pouvez également utiliser l'API de script de COM/VBScript (sous Windows) ou Applescript (sur Mac), qui s'exécute à l'extérieur d'InDesign mais interagit avec InDesign via l'API. Pour Windows, par COM, je veux dire n'importe quel langage qui supporte COM, donc ce n'est pas seulement le VBScript par défaut (peut être Python, Perl, PHP, Java, .NET, et même Microsoft JScript - leur version de Javascript pour la ligne de commande/desktop/etc.). En utilisant l'API de script sur un moteur différent, vous effectuez l'appel de service Web en externe à partir d'une autre langue (VBScript, Applescript, etc.) puis passez les résultats dans ExtendScript via l'appel API de script (dans COM/Applescript) de application.doScript ('extrait de code ExtendScript ici') (ou doJavascript) où extrait ExtendScript, pourrait être un extrait court qui utilise ExtendScript inclut pour inclure le fichier JSX réel, puis appelle une fonction/méthode ExtendScript, en lui transmettant les résultats du service Web comme arguments.

Un exemple de cette technique (ne couvrant pas la partie d'appel de service Web) est décrit ici dans quelques-unes des solutions:

Is it possible to execute JSX scripts from outside ExtendScript?

1

Vous pouvez également appeler AppleScript ou VB en fonction de l'os et d'utiliser certaines utilitaire de ligne de commande comme cUrl pour appeler votre webservice. Aussi, vous pouvez essayer getUrl, un script gratuit de Rorohiko qui facilite la communication web dans ExtendScript.

Questions connexes