栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > .Net

COM组件浅析(二) - 使用C#操作Adobe Illustrator

.Net 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

COM组件浅析(二) - 使用C#操作Adobe Illustrator

目录
    • 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#编写Demo

由于C#与VB都是基于 .NET的CLR的,因此适用于VB的文档也基本适用于C#。

当然,前提是,你需要有C/C++/C#/VB的开发经验,并使用过VS开发工具。

目前我安装的是Visual Studio Community 2017,下载地址:https://docs.microsoft.com/zh-cn/visualstudio/releasenotes/vs2017-relnotes,注意安装时需要勾选C#套件以及C++套件。

1. 创建工程

    下面,我们首先创建一个C#控制台程序,点击菜单:文件->新建->项目§… ,在弹出的窗口中左侧选择“Visual C#”,右侧选择“控制台应用(.NET Framework)”,底部名称填JacobDemoConsoleApp,最后点击确定即可。

    创建成功后,项目如下图所示。

2. 添加引用

    第二步,我们添加Adobe Illustrator COM的引用。点击菜单:项目->添加引用…,在弹出的窗口中,左侧选择“COM”,右侧选择“Adobe Illustrator CC Type Library”。然后点击底部确定即可。

    点击确定后,右侧如下图所示,增加了红框的内容,表示添加引用成功。

3. 添加样例代码

    第三步,我们在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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1023486.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号