- 介绍
这个文档是给那些想要学习开发Adobe InDesign插件的C++开发者。也适合有经验的开发者更新知识而阅读。它被设计为:给出插件开发介绍,展示怎样创建一些简单的插件,教授InDesign产品的内部架构(InDesign,Adobe InCopy和Adobe InDesign Server)。
关于InDesign插件
InDesign产品SDK提供了开发InDesign、InCopy和InDesign Server下插件的必要文件。在学习技术细节之前,很重要的是要理解所有InDesign产品都是基于同样的代码基础进行开发的。编写的插件可以被InDesign产品的任何组合进行加载。每个产品应用程序都由一个可以加载和初始化插件集的小可执行组件组成。每个可执行组件都做很少被最终用户发现的事情。另外,几乎所有的特性都由插件来提供。这个架构被Adobe工程师在InDesign产品SDK中实现,第三方开发者可以使用它。
在Windows下,插件是DLL,以”.apln”为文件扩展名。
插件分类
有很多种方法:
1.根据加载目录,如你可以创建一个InCopy-only插件。
2.作为model或user-interface插件。一个model插件将数据写入InDesign文档中。一个user-interface插件提供一个用户界面。一个InDesign插件必须标识出它是否支持model或user-interface操作。
3. Required或optional插件。第三方插件不能是required。
怎样开发InDesign插件
InDesign用C++来编写,很依赖一个资源编译器ODFRC(OpenDoc Framework Resource Compiler).ODFRC文件以”.fr”为扩展名,可以用到很多地方,包括用户界面,菜单和本地化。
可能最重要的,ODFRC用来定义和扩展InDesign对象模型的类。它们不是C++类,是boss。同boss集合工作,实例化boss对象一个InDesign插件开发的核心。
- 开始学习InDesinSDK
本章描述了怎样开始学习SDK。它提供SDK中文件的概述,介绍样例插件,创建基本插件的例子和哪里去查找帮助。
SDK综述
SDK(用<SDK>表示路径)包括许多种类的文件。本节讨论这些文件和它们的相对目录。
文档
为了开发InDesign插件,你必须理解许多C++和OpenDocFramework Resource Compiler资源文件实现上的概念和设计模式。
PDF版本的所有SDK文档的目录:<SDK>/docs/guides
SDK API Reference以下面两个文件提供:
<SDK>/docs/references/index.chm
<SDK>/docs/references/sdkdocs.tar.gz
两个文件都包括了所有公用API和SDK样例代码的文档。
Index.chm是压缩的HTML文件,在Windows下使用。双击打开浏览。
库
InDesign插件开发需要使用许多Adobe提供的库。在Windows下,是些lib文件。Debug和Release版本的库在:<SDK>/build/win/objd和<SDK>/build/win/objr
为了支持64位InDesignServer插件(只支持Windows),64位版本在这个目录:
<SDK>/build/win/objdx64
<SDK>/build/win/objrx64
许多库同样在<SDK>/external下可用。这些库原始的在InDesign开发组外。Windows下经常在这里使用这些库。
源码
InDesign产品SDK包括许多不同类型的源码文件。
公用API
头文件目录:<SDK>/source/public
扩展API
头文件目录:<SDK>/external
Open folder
目标是提供生成InDesign用户界面代码给开发者,作为复杂InDesign用户界面代码的例子,并提供完整的插件。至少,一个公开的插件必须能同Release目标平台一同编译。一个公开的插件可能不能同Debug目标一起编译。
Open folder不是一个公用API:在下个版本代码可能改变或移除。同样,open插件不会再SDK中文档化。
Open folder有三个子文件夹:
Components <SDK>/source/open/components。给插件的源码。
Includes <SDK>/source/open/includes/。子文件夹按功能划分头文件。
Interfaces <SDK>/source/open/interfaces/.子文件夹按功能类别划分接口文件。
工程文件在<SDK>/build/win/prj/.open工程文件的扩展名为:.open.vcproj。
样例插件
SDK包括许多样例插件。工程文件目录:<SDK>/build/win/prj。
样例工程的源文件目录:<SDK>/source/sdksamples
每一个样例有一个设计文档,在index.chm或对应HTML API文档中可用。设计文档提供了每一个样例的详细信息和描绘了插件内部的结构。
Snippets(代码片段)
SnippetRunner样例插件提供了一个很方便的方式来显示和测试代码片段。
界面包括一个下拉列表来选择snippet来运行。控制按钮来启动snippet,清空日志等。输入文本的区域,只读日志控件。SnippetRunner提供一些给它的用户代码的服务,如写日志的API。日志的内容可以写入文件。日志函数是一样的,不管是debug和release版本。
Snippet Runner源代码在SDK的这个目录:<SDK>/source/sdksamples/snippetrunner,工程文件在:<SDK>/build/win/prj/SnippetRunner.vcprj。所有SnippetRunner包括的SDK代码片段在:<SDK>/source/sdksamples/codesnippets。
Tools
<SDK>/devtools文件夹包括下面这些文件夹:
bin 包含了一些很有用的开发工具。Primarily用来帮助编译和合并资源。一个典型的SDK样例工程必须设置好这些工具,让其自动使用。不同平台下的工程需要不同工具集合,但是你需要从概念上知道怎样去使用它们,工程的设置和样例SDK是类似的。
scripts (仅Mac OS,省略)
sdktools 包括许多工具来促进开发。DollyXs一个工程向导来生成工程,带有一些基本的插件功能,如建立一个基本的用户界面。
sdktools/idmltools包括一些基于java的工具来同IDML、ICML和IDMS文件一些工作。这些工具运行你来验证打包的和未打包的文件,压缩和解压缩IDML包,用XSLT生成和转换IDML文件。更多细节,阅读<SDK>/devtools/sdktools/idmltools/.
statics_reporter StaticReporter工具查找InDesign对象代码的全局或静态变量,提供一个文本文件给每一个对象包括全局或静态对象的文件。
开发环境
这个部分描述了开发插件所需要的工具盒环境,怎样编译和执行例子代码,怎样启动调试过程。
需要的东西
不同操作系统需要不同的环境。
所有的系统
下面的表格列出了需要的基本组件。
需要的组件 | 说明 |
应用程序:InDesign CS6,Adobe InCopy CS6或者InDesign Server CS6 | 我们建议你同时拥有debug和release版应用程序。Debug版应用程序用很多机制可以用于检测bug,对开发成功的插件很重要。 |
OpenDoc Framework Resource Compiler(ODFRC) | 在InDesign SDK中已经包含 |
IGB以上的内存需要(最好2GB) |
|
Windows
在Windows下开发插件有一些额外的需要:
需要的组件 | 说明 |
Intel Pentium 4或 AMD Athlon 64 processor或更好 |
|
Windows XP sp2以上 |
|
Visual C++ 10 | Visual Studio 2010的一个组件 |
在window上编译之前,需要改变环境让VisualStudio知道怎样找到自定义Adobe build tools,如ODFRC:
- 启动Visual Studio 2010.
- 打开Visual Studio设置对话框,点击Tools菜单,选择Options.
- 在左边的控件中,展开Projects和Solutions,点击VC++ Directories.
- 添加<SDK>\devtools\bin到path中.
编译和执行样例代码
编译样例插件
启动SDK样例工程.
Windows
- 使用Build->Configuration Manager…来确认编译目标的配置
- 选择Build->Clean清理前面的build信息
- 选择Build->Build来编译
使用命令行编译样例
有编译工程文件的命令行工具。为了方便,SDK包含了所有样例工程的编译脚本。
Windows
Devenv命令用来编译一个工程文件。如,下面的代码可以编译Basic Dialog工程的debug版本。
devenv BasicDialog.sdk.vcproj /Rebuild Debug
buildAllSamples.bat文件使用devenv来编译所有Windows样例工程。这个脚本不检查编译结果。这个要靠你。在运行脚本之前,更正DEVENV变量的路径。执行脚本,使用下面的命令:
1.cd <SDK>\build\win\prj
2.buildAddSamples.bat
在InDesign中加载样例
为了能让开发的插件能在InDesign中使用,InDesign在启动时知道这个插件。有2中方法:使用指定的配置文件PlugInConfig.txt或拷贝插件到InDesign的插件目录下。
使用PlugInConfig.txt
1.如果InDesign还在运行,先退出
2.去下面的目录
Windows XP: C:\Documents and Settings\<user>\Application Data\Adobe\InDesign\Version 8.0\<locale>
Windows Vista: C:\Users\<user>\AppData\Roaming\Adobe\InDesign\Version 8.0\<locale>
3.在这个目录下创建PlugInConfig.txt,输入:=Path
4.根据需要编辑这个部分,下面的设置表示让InDesign加载SDK文件夹下的所有插件
=Path
"C:\Adobe InDesign CS6 Products SDK\build\win\debug\sdk"
注意:你可以使用“=Excluede”标记来排除一个特定的插件。
5.保存PlugInConfig.txt文件
6.重启InDesign
7.通过选择About Plug-ins菜单来确认一系列的插件是否已经加载
拷贝插件到插件目录
默认,SDK例子会被编译到下面的文件夹下:
<SDK>/build/win/debug|release/sdk
你可以拷贝你需要加载的插件到下面的目录下:
<InDesign Application Folder>/Plug-ins
让工程直接编译到插件目录下
你可以改变工程的设置,让插件文件直接编译在InDesign的插件目录下。
开始调试插件工程
1.vs工程中启动调试,一个对话框将弹出,这时候设置exe的路径
2.选择InDesign.exe,点击ok开始调试