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

时间:2009-04-09 15:21:08

标签: database adobe-illustrator extendscript

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

5 个答案:

答案 0 :(得分: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导出一个数据库,然后用它来读取它。 donezo。

答案 1 :(得分:2)

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

  1. 编写一个连接数据库以生成VB脚本的外部程序,并使用Illustrator执行“生成”脚本,这是我以前的方式。
  2. 新的ScriptUI,因为cs3提供了打开一个Window,包含一个flash swf作为驱动Illustrator JS引擎的接口。您可以在Flash内容中阅读xml,调用webservices,Flash Remoting。我不确定你是否对这些工具集感到满意。

答案 2 :(得分:2)

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

答案 3 :(得分:1)

我的理解是你需要在你的VB代码中使用ExtendScript来'doScript()'。 ExtendScript没有自己的任何真正的数据库连接。但我熟悉那些使用VB代码连接数据库并返回结果的人。 ExtendScript有doScript方法来运行VB代码。接下来的技巧是找到一种方法将数据恢复到ExtendScript以告诉Adobe应用程序该做什么。据我所知,.doScript没有一种很好的方式来接受嵌入代码的结果。所以我听到人们所做的是以下几点之一:

  • 让VB代码编写一个ExtendScript代码可以读取和解析的文本文件。
  • 让VB代码在Adobe Illustrator文档中添加“ScriptLabel”。然后使用ExtendScript读取相同的标签。这与编写文本文件非常相似,但只是没有文件。

HTH

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

答案 4 :(得分:0)

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

有一个调用ExtendScript的VB / VBScript包装器,这个包装器处理数据库交互并将数据传回&发表于ExtendScript。这使您可以简单地重用数据库代码,重用VB中的内容,并使ExtendScript保持简单。

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

Is it possible to execute JSX scripts from outside ExtendScript?

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