我是一家印刷公司的内部开发人员。
我们使用Adobe Indesign CS3和CS5创建用于打印的文档。
我在Adobe Extendscript中创建了一个脚本,该脚本创建了一个Indesign文档,并在客户端自行完成时处理一些基本的转换。
我使用Javascript编写此脚本。
是否可以通过这样的脚本调用Web服务?
若然,怎么样?
如果没有,从桌面调用Web服务的最佳方法是什么?
谢谢。
答案 0 :(得分:6)
答案 1 :(得分:5)
不,是的。
不,没有办法(afaik)让InDesign从脚本调用Web服务。这很可能并且经常从InDesign插件中完成(您可以执行任意c ++代码,以便您可以执行任何操作)。然而,这是一个完全不同的野兽要学习。
是的,可以使用库从ExtendScript中完成。因此,基本上您的脚本会调用Web服务来获取数据(可能使用从InDesign或文档中获取的参数),然后将返回的值发送到其他InDesign脚本函数中以执行操作。
可以找到使用'Extendables'的基本样本here。
编辑:因为似乎有些混乱:文件不是运行脚本的文件,甚至很少包含它们。脚本以InDesign特定的Javascript格式(.jsx)保存,并由InDesign脚本引擎解释。答案 2 :(得分:1)
您也可以根据操作系统调用AppleScript或VB,并使用某些命令行实用程序(如cUrl)来调用您的Web服务。此外,您还可以尝试使用来自Rorohiko的免费脚本getUrl,它可以简化ExtendScript中的Web通信。
答案 3 :(得分:0)
...可能是您使用InDesign从文档中创建pdf。在pdf中你可能可以。但是从原始的InDesign doc可能不是。我还投票说你将无法在文档打开之前运行js。我建议与InDesign专家一起讨论。我很好奇你会想出什么,因为我记得ID确实让你在文档中包含了交互性。如果您在其他地方找到答案,请回复。
答案 4 :(得分:0)
除了Extendables,还有2个备选选项:
Adobe Bridge / Bridgetalk
对于Adobe套件的特定版本不能说,但如果您可以使用或拥有Adobe Bridge / Bridgetalk,您可以使用Adobe的跨应用程序通信和HttpConnection类可用于Bridge(如根据SDK doc),让InDesign调用Bridge来发出HTTP请求并将结果传递回InDesign。
我没有InDesign的具体示例,但这里有一些适用于Illustrator的内容。我认为它很容易移植到InDesign。
https://gist.github.com/daluu/2d9dec72d0863f9ff5a7
https://gist.github.com/mericson/6509997
在外部进行Web服务调用,并与ExtendScript接口
Adobe的脚本API引擎不是严格的ExtendScript / Javascript。您还可以使用COM / VBScript(在Windows上)或Applescript(在Mac上)上的脚本API,它们在InDesign外部执行,但通过API与InDesign交互。
对于Windows,COM,我指的是任何支持COM的语言,因此它不仅仅是默认的VBScript(可以是Python,Perl,PHP,Java,.NET,甚至是Microsoft JScript - 他们的Javascript版本用于命令行/桌面/等。)。
在其他引擎上使用脚本API,您可以从其他语言(VBScript,Applescript等)外部进行Web服务调用,然后通过脚本API调用(在COM / Applescript中)将结果传递给ExtendScript strong> application.doScript(' ExtendScript code snippet here')(或doJavascript),对于ExtendScript片段,可以是使用ExtendScript包含的简短片段,包括实际的JSX文件,然后调用ExtendScript函数/方法,将Web服务结果作为参数传递给它。
此处的一些解决方案中描述了此技术的示例(未涵盖Web服务调用部分):
Is it possible to execute JSX scripts from outside ExtendScript?