天天看點

開始Adobe InDesign插件的開發



(說明:所有Mac的内容并未加入,讀者可以再Adobe官網上下載下傳SDK,檢視mac部分的資訊。如果有插件定制需求,請聯系QQ:371545207無臉男)

  1. 介紹

這個文檔是給那些想要學習開發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插件開發的核心。

  1. 開始學習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:

  1. 啟動Visual Studio 2010.
  2. 打開Visual Studio設定對話框,點選Tools菜單,選擇Options.
  3. 在左邊的控件中,展開Projects和Solutions,點選VC++ Directories.
  4. 添加<SDK>\devtools\bin到path中.

編譯和執行樣例代碼

編譯樣例插件

啟動SDK樣例工程.

Windows

  1. 使用Build->Configuration Manager…來确認編譯目标的配置
  2. 選擇Build->Clean清理前面的build資訊
  3. 選擇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開始調試

 

繼續閱讀