- Adobe 官方手册
- 使用C#编写Demo
- 1. 创建工程
- 2. 添加引用
- 3. 添加样例代码
- 4. 运行样例代码
- 尝试看得更清晰
在上一篇中, COM组件浅析(一) - 使用Java操作Adobe Illustrator,我们已经可以通过Java代码实现对Adobe Illustrator的控制,包括创建一个新.ai文稿,在文稿中进行操作,保存新文稿等。本小节,我们将使用更接近COM的C#来一览Adobe Illustrator中有哪些成员。 Adobe 官方手册
在Java项目中,我们使用了Illustrator.Application、Documents、TextFrames等对象,那么我又是怎么知道AI里面有哪些对象的,每个对象又有哪些属性和方法的呢?答案就在Adobe公司提供的开发者手册中。
Adobe官网手册链接地址:https://www.adobe.com/devnet/illustrator/scripting.html
由于我安装的是Adobe Illustrator CC 2017,并且后续需要对COM组件深入了解,因此我选择了离.NET最近的语言VB的版本,也就是红框的文稿。
AI VB Script PDF https://www.adobe.com/content/dam/acom/en/devnet/illustrator/pdf/Illustrator_VBScript_Reference_2017.pdf
下载PDF文档后,我们就可以通过目录查看每个对象的属性与行为了。如下图所示,我们发现Application对象有ActiveDocument、Documents等属性,分别可以获取到当前活跃的文档,以及打开的所有文档。
显然,通过文档查看,能够获取最全面的信息。但同时,也造成了初学者(Adobe Illustrator编程初学者)门槛过高。下面推荐一种更快速了解AI COM组件的方法,即使用C#的对象浏览器。当然,在此之前,我们需要先使用C#编写一个Demo。
由于C#与VB都是基于 .NET的CLR的,因此适用于VB的文档也基本适用于C#。
当然,前提是,你需要有C/C++/C#/VB的开发经验,并使用过VS开发工具。
1. 创建工程目前我安装的是Visual Studio Community 2017,下载地址:https://docs.microsoft.com/zh-cn/visualstudio/releasenotes/vs2017-relnotes,注意安装时需要勾选C#套件以及C++套件。
下面,我们首先创建一个C#控制台程序,点击菜单:文件->新建->项目§… ,在弹出的窗口中左侧选择“Visual C#”,右侧选择“控制台应用(.NET Framework)”,底部名称填JacobDemoConsoleApp,最后点击确定即可。
创建成功后,项目如下图所示。
第二步,我们添加Adobe Illustrator COM的引用。点击菜单:项目->添加引用…,在弹出的窗口中,左侧选择“COM”,右侧选择“Adobe Illustrator CC Type Library”。然后点击底部确定即可。
点击确定后,右侧如下图所示,增加了红框的内容,表示添加引用成功。
第三步,我们在Main方法中加入测试的样例代码。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace JacobDemoConsoleApp
{
class Program
{
static void Main(string[] args)
{
Illustrator.Application app = new Illustrator.Application();
Illustrator.Document doc = app.Documents.Add();
Illustrator.TextFrame textFrame = doc.TextFrames.Add();
textFrame.Top = 600;
textFrame.Left = 100;
textFrame.Contents = "hello, illustrator";
double width = textFrame.Width;
Console.WriteLine("width = " + width);
Illustrator.IllustratorSaveOptions saveOptions = new Illustrator.IllustratorSaveOptions();
saveOptions.Compatibility = Illustrator.AiCompatibility.aiIllustrator17;
saveOptions.FlattenOutput = Illustrator.AiOutputFlattening.aiPreserveAppearance;
doc.SaveAs("~\source\repos\JacobDemoConsoleApp\JacobDemoConsoleApp\test.ai", saveOptions);
doc.Close();
Console.ReadKey();
}
}
}
样例代码实现了COM组件浅析(一) - 使用Java操作Adobe Illustrator中一模一样的功能。显然,C#的代码在操作COM上,可读性要高很多。
4. 运行样例代码 最后一步,我们运行样例代码。点击“运行”按钮,会发现控制台窗口打印了“width = 72.94677734375”,如下图所示。同时,在项目根目录下生成了test.ai文件。使用Adobe Illustrator查看,跟COM组件浅析(一) - 使用Java操作Adobe Illustrator并没有任何区别,都是在左上角显示“hello, illustrator”文本框。
如果你跟我一样,手动敲写代码,那么就会发现,在VS里面编写相同功能的代码, 提示要智能得多,在IDEA只能写字符串的地方,到了VS里面,就可以写具体的类名、方法名。而对于方法而言,VS也提供了方法的原型说明,基本上不需要一点点对照着手册进行代码编写了。
除此之外,我们还可以通过【按下Ctrl+鼠标左击】的形式,查看每个类的具体信息。如下图展示的便是文本框这个类(确切地说,是接口)。
根据VS提供的这份接口说明,再加上Adobe官方手册,基本上可以说使用Java操作AI没有问题了。
在下一篇中,我们将使用C/C++来操作Adobe Illustrator。
系列文章
第一篇 COM组件浅析(一) - 使用Java操作Adobe Illustrator
第二篇 COM组件浅析(二) - 使用C#操作Adobe Illustrator
第三篇 COM组件浅析(三)- 使用C/C++操作Adobe Illustrator



