Можно ли вызвать веб-сервис с помощью JavaScript-кода Indesign?

Я - собственный разработчик для печатной компании.

Мы используем Adobe Indesign CS3 и CS5 для создания документов для печати. ​​

В Adobe Extendscript я создал script, который создает документ Indesign и обрабатывает некоторые базовые преобразования, когда клиент сам не делает этого.

Я использовал Javascript для написания этого script.

Можно ли вызвать веб-службу через такой script?

Если да, то как?

Если нет, то каким будет лучший способ вызвать веб-службу с рабочего стола?

Спасибо.

Ответ 1

Нет и Да.

Нет, нет способа (afaik) заставить InDesign вызвать веб-службу из script. Это очень возможно и часто делается из плагинов InDesign (вы можете выполнить произвольный код С++, чтобы вы могли делать что угодно). Тем не менее, это совсем другой зверь, чтобы учиться.

Да, это возможно сделать из ExtendScript с помощью библиотеки. Таким образом, в основном ваш script должен вызвать веб-службу для получения данных (возможно, используя параметры, полученные из InDesign или документа), а затем отправить возвращаемые значения в другие функции InDesign script для выполнения операций.

Базовый образец можно найти здесь, в котором используется "Расширяемые файлы".

РЕДАКТИРОВАТЬ: Поскольку, похоже, возникает некоторая путаница: документы не те, что работают под управлением script, и очень редко даже содержат их. Сценарии сохраняются в формате Javascript в формате InDesign (.jsx) и интерпретируются механизмом сценариев InDesign.

Ответ 2

Удлинители уже упоминались:

Extendables

Это не jQuery, а это библиотека для InDesign Scripting.

Наиболее полное обсуждение можно найти в блоге Rorohiko с хорошим прямым примером.

Ответ 3

Вы также можете вызвать AppleScript или VB в зависимости от os и использовать некоторую утилиту командной строки, например cUrl, для вызова вашего веб-сервиса. Также вы можете попробовать getUrl, бесплатный script от Rorohiko, который упрощает веб-связь внутри ExtendScript.

Ответ 4

... возможно, если вы используете InDesign для создания pdf-документа из документа. В pdf вы, вероятно, можете. Но из необработанного документа InDesign, вероятно, нет. Я также проголосую за то, что вы не сможете запустить js из документа до его открытия. Я бы предложил обсудить его с экспертами InDesign. Мне любопытно, что вы придумали, так как я помню, что идентификатор позволяет включить интерактивность в документ. Пожалуйста, отправьте ответ, если вы найдете ответ в другом месте.

Ответ 5

Помимо Extendables, есть 2 альтернативных варианта:

Adobe Bridge/Bridgetalk

Нельзя сказать для определенных версий пакета Adobe, но если вы можете использовать или иметь Adobe Bridge/Bridgetalk, вы можете использовать интерфейс кросс-приложений Adobe и класс HttpConnection, доступные для Bridge (согласно SDK-документу), и попросите InDesign вызвать Bridge, чтобы выполнить HTTP-запрос и передать результаты обратно в InDesign.

У меня нет конкретного примера для InDesign, но здесь некоторые предназначены для Illustrator. Я бы предположил, что он легко переносит на InDesign.

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

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

Сделать внешние вызовы веб-служб и интерфейс к ExtendScript

API-интерфейс API-скриптов Adobe не является строго ExtendScript/Javascript. Вы также можете использовать API script из COM/VBScript (в Windows) или Applescript (на Mac), которые выполняют внешний интерфейс InDesign, но взаимодействуют с InDesign через API.

Для Windows, через COM, я имею в виду любой язык, поддерживающий COM, поэтому он не только по умолчанию VBScript (может быть Python, Perl, PHP, Java,.NET, даже Microsoft JScript - их версия Javascript для командной строки/настольные/др.).

Используя API script в другом движке, вы вызываете вызов веб-службы извне с другого языка (VBScript, Applescript и т.д.), затем передаете результаты в ExtendScript с помощью вызова API script (в COM/Applescript) application.doScript( "фрагмент кода ExtendScript здесь" ) (или doJavascript), где для фрагмента ExtendScript может быть короткий фрагмент, который использует ExtendScript, включает в себя фактический JSX файл, а затем вызывает функцию ExtendScript/метод, передавая ему результаты веб-службы в качестве аргументов.

Пример этой методики (не охватывающей часть вызова веб-службы) описывается здесь в некоторых решениях:

Возможно ли выполнить сценарии JSX извне ExtendScript?