Je suis développeur en interne pour une société d'impression.

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 c'est le cas, comment?

Sinon, quelle serait la meilleure façon d'appeler un service Web à partir du bureau?

Je vous remercie.

14
story 27 sept. 2011 à 22:18

5 réponses

Meilleure réponse

Non et oui.

Non, il n'y a aucun moyen (afaik) de faire appeler InDesign 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 quoi que ce soit). Cependant, c'est une bête entièrement différente à apprendre.

Oui, il est possible de le faire depuis 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 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é ici qui utilise des «extensibles».

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

5
MatsT 27 avril 2015 à 16:35

Outre les extensions, il existe 2 options alternatives:

Adobe Bridge / Bridgetalk

Je 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 communication inter-applications d'Adobe et la classe HttpConnection disponibles pour Bridge (selon la documentation du SDK) et avoir InDesign appelez Bridge pour effectuer la demande HTTP et renvoyer les résultats à InDesign.

Je n'ai pas d'exemple spécifique pour InDesign, mais voici quelques-uns destinés à Illustrator. Je suppose qu'il se porterait facilement sur InDesign.

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

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

Passer des appels de service Web en externe et interface avec ExtendScript

Le moteur d'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 (sous Mac), qui s'exécutent en externe à InDesign mais interagissent avec InDesign via l'API.

Pour Windows, par COM, je veux dire n'importe quel langage qui prend en charge COM, donc ce n'est pas seulement le VBScript par défaut (peut être Python, Perl, PHP, Java, .NET, même Microsoft JScript - leur version de Javascript pour la ligne de commande / bureau / etc. .).

En utilisant l'API de script sur un autre moteur, 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 d'API de script (dans COM / Applescript) de l'application .doScript ('ExtendScript code snippet here') (ou doJavascript) où pour l'extendScript snippet, pourrait être un court extrait qui utilise ExtendScript inclut pour inclure le fichier JSX réel, puis appeler une fonction / méthode ExtendScript, en lui passant le service Web résultats comme arguments.

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

Est-il possible d'exécuter des scripts JSX depuis l'extérieur d'ExtendScript?

1
Community 23 mai 2017 à 12:16

... probablement si vous utilisez InDesign pour créer un pdf à partir du document. Dans le pdf, vous le pouvez probablement. Mais à partir du document brut InDesign probablement pas. Je voterais également que vous ne pourrez pas exécuter js à partir du document avant qu'il ne soit ouvert. Je suggérerais de le prendre avec des experts InDesign. Je suis cependant curieux de savoir ce que vous allez trouver puisque je me souviens que l'ID vous permet d'inclure l'interactivité dans le document. Veuillez renvoyer si vous trouvez votre réponse ailleurs.

0
vector 27 sept. 2011 à 19:33

Vous pouvez également appeler AppleScript ou VB selon le système d'exploitation et utiliser un utilitaire de ligne de commande comme cUrl pour appeler votre service Web. Vous pouvez également essayer getUrl, un script gratuit de Rorohiko qui facilite la communication Web dans ExtendScript.

1
Loic 27 avril 2015 à 09:17

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

Extensibles

Ce n'est pas jQuery, c'est plutôt une bibliothèque pour InDesign Scripting.

La discussion la plus complète se trouve sur le blog de Rorohiko, avec un bel exemple simple.

6
Mr.Wizard 14 oct. 2011 à 15:17
7573831