使用 ExtendScript(适用于 Adobe Illustrator)的数据库使用

3

我希望将一个VB程序重构为ExtendScript,以便自动化Adobe Illustrator CS4中的一些绘图操作,但是需要从数据库中读取数据。是否可以使用ExtendScript来读取数据库?如何实现?


你真的需要将VB代码转换为ExtendScript吗?如果这不是一个固定的要求,最简单的替代方案实际上是使用Adobe Illustrator CS4 COM API,它与ExtendScript可用的API大致相同。采用这种方法,您可以通过COM API进行所有绘图,而不是通过ExtendScript API命令等效进行绘图,并且可以坚持使用VB / VBScript,因此仍然保留使用VB从数据库中工作的能力。请注意,由于某种原因,Adobe将(API)脚本参考标记为“VBScript”,而不是“COM”。 - David
5个回答

4

是的,Elasticsearch可以读取CSV文件。只需要使用逗号分隔符格式化数据库。

以下是一个可行的函数:

function readPref (thePath) {
    if (File(thePath).exists == true) {

    var file = File(thePath);
    file.open("r");
    file.encoding= 'BINARY';
    var theText = file.read();
    file.close();
    return String(theText).split(",")

    }
};

应该返回一个包含所需内容的数组。让VB导出数据库,然后使用它来读取即可。完成。

如果这个回答对您有帮助,请考虑给它点赞或接受它作为满意的答案。 - Lukasz
这可能对在ExtendScript中读取CSV有所帮助:https://github.com/fabiantheblind/extendscript.csv。 - David

2

我有一个稍微不同的解决方案,我一直在成功使用:

创建一个可以访问您的数据库的Web服务,然后从ExtendScript使用http连接来消耗这些服务(从那里开始,您可以做几乎任何您想要的事情)。


2

Illustrator脚本引擎没有提供直接读取外部数据的机制,但是您有几种方法可以做到这一点...

  1. 编写一个外部程序连接数据库生成VB脚本,并使用Illustrator执行“生成”的脚本,这是我以前使用的旧方法。
  2. 自CS3以来,新的ScriptUI提供了打开窗口的方式,其中包含Flash swf作为接口驱动Illustrator JS引擎。在Flash内容内,您可以读取xml、调用webservices和Flash Remoting。我不确定您是否熟悉这些工具集。

你有关于第二种方法的更多信息或链接吗? - Brian Boatright
是的,你可以使用HTTP请求http://old.code.zhdk.ch/projects/CERNRepository/browser/eBulletin/Submission/InDesignJS/HttpLibrary.jsx,或者从本地读取CSV文件。 - Lukasz
我只是想指出,脚本引擎指的是 Adobe 应用程序的本机 ExtendScript 引擎。因为所有 Adobe 应用程序(在 Windows 上)也公开了一个可以被 VBScript 和其他兼容 COM 语言使用的 COM API/引擎。虽然我们不知道 OP 是否需要特定的 ExtendScript 选项。 - David

1

我的理解是,您需要使用ExtendScript来使用您的VB代码进行“doScript()”。ExtendScript本身没有任何真正的数据库连接。但我熟悉有人使用VB代码连接到数据库并返回结果。ExtendScript具有该doScript方法以运行VB代码。诀窍似乎是找到一种方法将数据传回ExtendScript,告诉Adobe应用程序要做什么。据我所知,“.doScript”没有一个好的方式来接受嵌入式代码的结果。因此,我听说人们做的事情有以下几种:

  • 让VB代码编写一个文本文件,ExtendScript代码可以读取和解析。
  • 让VB代码向您的Adobe Illustrator文档添加“ScriptLabel”。然后使用ExtendScript读取相同的标签。这实际上与编写文本文件相同,但没有文件。

希望对您有所帮助

Jon S. Winters, ExtendScript支持, 电子出版支持


我对这个选项感到有点困惑,尽管我之前忽略了它。这是为哪个Adobe/ExtendScript的脚本引擎呢?我注意到在Illustrator CS6脚本参考文档中,doScript可供VBScript和Applescript使用,并且对于VBScript,还有doJavascript(用于执行ExtendScript代码)。通常用于Adobe应用程序的ExtendScript是JavaScript,但文档中没有提到doScript()。哪个文档提到了这个?或者您是否有其他说明? - David

0
无论您是否需要将VB重构为ExtendScript 100%(没有VB代码,全部是ExtendScript),我会说最简单的解决方案是这样的:
有一个VB / VBScript包装器调用ExtendScript,此包装器处理数据库交互并将数据传递回和传递给ExtendScript。这使您可以保持数据库代码简单,重用您在VB中拥有的内容,并保持ExtendScript简单。
您可以使用Adobe应用程序的COM API从VB / VBScript调用ExtendScript,该API具有从ExtendScript获取的所有绘图方法以及执行JavaScript(或更现实的ExtendScript)代码的doJavascript()方法。此相同的doJavascript()方法可用于拉入ExtendScript JSX文件而不是一小段JavaScript代码。您可以在相关的SO帖子中找到更多详细信息:

看一下那些与Windows有关的答案。将这个问题和解决方案进一步扩展,它也可以适用于其他平台(如Mac、Python、Perl等)。它不必仅限于VB和Windows,同样的方法也可以用于通过Windows上的COM或Mac上的Applescript与ExtendScript进行外部交互,并且这将适用于任何与COM/Applescript兼容(或接口)的语言。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接