3

我想将一个 VB 程序重构为 ExtendScript 以自动化 Adob​​e Illustrator CS4 中的一些绘图,但需要从数据库中读取。是否可以使用 ExtendScript 从数据库中读取?如何?

4

5 回答 5

4

是的,ES 可以读取 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导出一个数据库,然后用它来读取它。多佐。

于 2012-04-27T02:26:53.450 回答
2

我有一些我一直在成功使用的不同解决方案:创建一个可以访问您的数据库的 Web 服务,然后从 ExtendScript 使用 http 连接来使用这些服务(从那里您几乎可以做任何您想做的事情) .

于 2009-12-16T15:10:19.993 回答
2

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

  1. 编写一个连接数据库的外部程序以生成VB脚本,并使用Illustrator执行“生成”脚本,这是我以前的做法。
  2. 自cs3以来的新ScriptUI提供了打开一个Window,包含一个flash swf作为驱动Illustrator JS引擎的接口。您可以在 Flash 内容中读取 xml、调用 webservices、Flash Remoting。我不确定您是否对这些工具集感到满意。
于 2009-07-18T17:36:45.320 回答
1

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

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

高温高压

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

于 2009-07-02T03:54:53.650 回答
0

无论您是否需要将 VB 重构为 100% 的 ExtendScript(没有 VB 代码,全部为 ExtendScript),我想说最简单的解决方案是这样的:

有一个调用 ExtendScript 的 VB/VBScript 包装器,该包装器处理数据库交互并将数据来回传递给 ExtendScript。这允许您保持数据库代码简单,重用您在 VB 中拥有的内容,并使 ExtendScript 保持简单。

您可以使用 Adob​​e 应用程序的 COM API 从 VB/VBScript 调用 ExtendScript,它具有从 ExtendScript 获得的所有绘图方法以及用于执行 javascript(或更实际地是 ExtendScript)代码的 doJavascript() 方法。同样的 doJavascript() 方法可用于拉入 ExtendScript JSX 文件,而不是一段 javscript 代码。您可以在相关的 SO 帖子中找到更多详细信息:

是否可以从 ExtendScript 外部执行 JSX 脚本?

查看特定于 Windows 的答案。进一步考虑这个问题和解决方案,它也可以适用于其他平台(Mac、Python、Perl 等)它不一定适用于 VB 和 Windows,同样的方法可以用于通过 COM 与外部的 ExtendScript 交互Mac 上的 Windows 或 Applescript,这将适用于任何与 COM/Applescript 兼容(或接口)的语言。

于 2015-04-14T22:06:08.060 回答