2011-09-27 16 views
11

Jestem wewnętrznym deweloperem firmy drukującej.Czy można wywołać usługę internetową za pomocą indeksu javascript?

Używamy Adobe Indesign CS3 i CS5 do tworzenia dokumentów do drukowania.

Utworzyłem skrypt w Adobe Extendscript, który tworzy Dokument Indesign i obsługuje podstawowe konwersje, gdy klient nie zrobi tego samodzielnie.

Użyłem Javascript, aby napisać ten skrypt.

Czy można wywołać usługę internetową za pomocą takiego skryptu?

Jeśli tak, w jaki sposób?

Jeśli nie, jaki byłby najlepszy sposób połączenia się z serwisem WWW z pulpitu?

Dziękuję.

+1

Proszę zostawić konstruktywną krytykę dotyczącą tego, jak to jest złe pytanie, zanim po prostu przestaniemy to robić. Jestem tu stosunkowo nowy i po prostu szukam pomocy, starając się zadać moje pytania tak jasno, jak to tylko możliwe. – story

+0

... czy mówisz o wywołaniu ws z dokumentu do publikacji pulpitu? – vector

+0

Zasadniczo tak. Muszę wywołać ws z programu Adobe Indesign CS3 - CS5, chociaż plan nie wymaga jeszcze otwarcia dokumentu po wywołaniu skryptu. – story

Odpowiedz

4

Nie i tak.

Nie, nie ma sposobu (afaik), aby program InDesign wywoływał usługę WWW ze skryptu. Jest to bardzo możliwe i często wykonywane z wtyczek InDesign (możesz wykonać dowolny kod C++, dzięki czemu możesz zrobić cokolwiek). Jednak to zupełnie inna bestia do nauki.

Tak, można to zrobić z ExtendScript za pomocą biblioteki. Zasadniczo twój skrypt wywoływałby usługę sieciową w celu pozyskania danych (może za pomocą parametrów uzyskanych z programu InDesign lub dokumentu), a następnie wysłał zwrócone wartości do innych funkcji skryptu InDesign w celu wykonania operacji.

Próbkę podstawową można znaleźć pod numerem here, która używa elementów rozszerzalnych.

EDYCJA: Ponieważ wydaje się, że istnieje pewne zamieszanie: dokumenty nie są tymi, które uruchamiają skrypt i bardzo rzadko nawet je zawierają. Skrypty są zapisywane w określonym formacie JavaScript programu InDesign (.jsx) i interpretowane przez silnik skryptowy InDesign.

+0

Zaniemówiłam. Ta biblioteka Extendables jest genialna. Dokładnie tego potrzebowałem. Dziękuję Ci! Dodałbym jeden razy więcej, gdybym mógł. – story

+1

Wydaje się, że Extendibles stało się wieprzowe: http://porky.io/ – Ben

+0

@Ben, dzięki za podpowiedź na porky. Krótko mówiąc na podstawie kodu, nie sądzę, wieprzowina była Extendables. Mogą mieć wspólną funkcjonalność, ale mają inną strukturę i czasami służą innym celom. porky wygląda jak złącze DB do ExtendScript z kilkoma dodatkami. Extendables to framework testowy dla ExtendScript z kilkoma dodatkami. – David

0

... prawdopodobnie, jeśli używasz InDesign do utworzenia pliku PDF z dokumentu. W pliku PDF prawdopodobnie możesz. Ale od surowego dokumentu InDesign prawdopodobnie nie. Chciałbym również głosować, że nie będzie można uruchomić js z dokumentu przed jego otwarciem. Proponuję podjąć się tego za pomocą ekspertów InDesign. Ciekaw jestem jednak, co wymyślisz, odkąd pamiętam, że ID pozwala ci włączyć interaktywność do dokumentu. Wyślij odpowiedź, jeśli znajdziesz odpowiedź w innym miejscu.

+0

JS?Wtedy tak, prawdopodobnie możesz, zastanawiasz się, czy możesz dołączyć całą bibliotekę jQuery do dokumentu :-), wykonaj wywołanie Ajax. – vector

+0

Hmm, też się zastanawiam. To byłoby interesujące. – story

+0

spróbuj, zobacz, co się stanie. Gazeta do samodzielnego formatowania :-) – vector

6

Extendables już wspomniano:

Extendables

Nie jest jQuery, zamiast tego jest biblioteka skryptów dla programu InDesign.

Najbardziej kompletna dyskusja znajduje się na Rorohiko's blog, z ładnym przykładem prosto do przodu.

+0

Dziękuję, to było bardzo pomocne. +1 za wspaniałość. – story

0

Poza Extendables istnieją 2 alternatywne opcje:

Adobe Bridge/Bridgetalk

nie można powiedzieć o poszczególnych wersjach pakietu Adobe, ale jeśli można użyć lub Adobe Bridge/Bridgetalk , możesz skorzystać z komunikacji krzyżowej aplikacji aplikacji i klasy HttpConnection dostępnej dla Bridge (zgodnie z dokumentem SDK) i mieć połączenie InDesign Bridge, aby wykonać żądanie HTTP i przekazać wyniki z powrotem do InDesign.

Nie mam konkretnego przykładu dla programu InDesign, ale niektóre z nich są przeznaczone dla programu Illustrator. Zakładam, że łatwo przeniesie się do InDesign.

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

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

Producent serwis internetowy wymaga zewnętrznie i interfejs do ExtendScript

silnik skryptowy API Adobe nie jest ściśle ExtendScript/Javascript. Możesz również użyć skryptowego interfejsu API z COM/VBScript (w Windows) lub Applescript (na Macu), które wykonują zewnętrzne dla InDesign, ale współdziałają z InDesign za pośrednictwem interfejsu API.

Dla Windows, przez COM, mam na myśli każdy język, który obsługuje COM, więc nie jest to tylko domyślny VBScript (może to być Python, Perl, PHP, Java, .NET, nawet Microsoft JScript - ich wersja Javascript dla wiersza poleceń/desktop/itp.).

Korzystając z API skryptu na innym silniku, wywołujesz usługę internetową zewnętrznie z innego języka (VBScript, AppleScript itd.), A następnie przekazujesz wyniki do ExtendScript za pomocą wywołania skryptowego API (w COM/Applescript) z application.doScript ("Fragment kodu ExtendScript tutaj") (lub doJavascript) gdzie w przypadku fragmentu kodu ExtendScript może być krótki fragment kodu, który wykorzystuje ExtendScript, aby uwzględnić rzeczywisty plik JSX, a następnie wywołać funkcję/metodę ExtendScript, przekazując mu wyniki usługi sieciowej jako argumenty.

Przykładem tej techniki (nie obejmujące część połączeń serwis internetowy) jest opisany tutaj w niektórych rozwiązań:

Is it possible to execute JSX scripts from outside ExtendScript?

1

Można również zadzwonić AppleScript lub VB zależności od systemu operacyjnego i korzystać z niektórych narzędzie wiersza poleceń, takie jak cUrl, aby połączyć się z serwisem internetowym. Możesz także spróbować uzyskać getUrl, darmowy skrypt od Rorohiko, który ułatwia komunikację internetową wewnątrz ExtendScript.