acrobat插件开发资料_开发插件和应用程序

举报
资源描述
第2章 理解插件这一章提供一个总览,插件如何被载入,被初始化,被卸载,以及其它与插件和PDF库应用相关的概念。推荐你在开始开发插件或PDF库应用之前阅读本章节。第1节 关于插件初始化这部分描述Acrobat或Adobe Reader执行初始化插件的操作顺序。插件载入和初始化:当Acrobat或Adobe Reader启动时,自动检索\Program Files\Adobe\Acrobat\plug_ins目录,定位和载入插件。另外,Acrobat或Adobe Reader也检索包含在这个目录里的子目录。这个检索工作只有一级深度。Acrobat或Adobe Reader在启动时在启动界面最底部一行显示一个进度消息。当每个插件被载入时,进度消息显示插件的名字。Acrobat或Adobe Reader启动时如果SHIFT键被按住,没有插件被载入。同时,如果Acrobat或Adobe Reader运行在被认证模式时,也没有第三方插件被载入。当创建一个插件时,在思想里遵守如下规则:1. 不要在你的插件初始化时创建对话框,或 其它 Acrobat或Adobe Reader 启动的工作。应用 IAC interapplication communication 被启动,它不 对 应你的对话框有 。2. 执行一个PluginUnload 序, 分 的 。这个 序 在初始化 序 false被 用。在件下,这个 序不 被 用, 用 关 Acrobat或Adobe Reader。¡¢和初始化:Acrobat或Adobe Reader执行¡¢动作,在每一个插件被£开和载入时。在¡¢⁄¥,插件ƒ§自currency1的名字,'个初始化 序,和一个 “«的卸载 序。一个插件‹›执行下面的¡¢fifl:ACCB1 ASBool ACCB2 PIHandshake(ASUns32 handshakeVersion, void, *hsData)在¡¢⁄¥,插件 –一个hsDatafl†‡· (在PIVersn.h 件 定¶)。Acrobat或Adobe Reader用ASCallbackCreateProto方•,‚ 有的被„” 这个fl†‡·里的fifl»…‰ fifl里。关于这个方•的¿息, ` ´ˆAcrobat and PDF Library API Reference˜。¯ 件DUCallbacks.h˘§˙ 有的 方•,这¨方•‹›在你的插件 被定位。下面显示这¨ 方•的fifl˘§:ACCB1 ASBool ACCB2 PluginExportHFTs(void);ACCB1 ASBool ACCB2 PluginImportReplaceAndRegister(void);ACCB1 ASBool ACCB2 PluginInit(void);ACCB1 ASBool ACCB2 PluginUnload(void);有的 fifl true,如果你的插件的˘§ ˚ ,或¸ fifl “的˝˛没有被执行。如果你的插件˘§ˇ—, false。不 Acrobat, Adobe Reader, 一个插件 ¡¢,Acrobat或Adobe Reader 提示一个 对话框,在载入其它插件之前显示一个解 要。在最 的 下,一个插件‹›执行PluginInit 。:¡¢fifl位于PIMain.c 件 。这个 件 的 Æ的˝˛ 对不 被ª 。HFTs:HFT Host Function Table 一个ŁØ,Œº插件 以 用Acrobat或Adobe Reader 的方•,其它插件也一 。Acrobat˚ 与 有插件的¡¢ ,它 用每个插件的PluginExportHFTs fifl。在PluginExportHFTsfifl ,一个插件 以 一¨HFTs,£ 提供 其它插件 用。这个 fifl应æ只 HFT,不要 用其它Acrobat API方•。相关¿息 `第164ı的 Working with Host Function Tables”。:这 一个插件 HFT的 一Ł 。入HFTs和łnotifications ø:Acrobat或Adobe Reader˚œ 用每一个插件的PluginExportHFTs 方• ,ß 用每个插件的PluginImportReplaceAndRegister 方•。在这个方• ,插件执行三个 :1. 入 用的一¨Ø定的HFTs(标准的Acrobat HFTs自动 入)。插件也 以在º之 ,在插件运行时的 时刻 入HFTs。2. 用AVAppRegisterNotification方•,łnotifications ø。插件也 以在运行时 ø或取消 ø。插件 以在 何时候 – 一个notification,在它已˚ ø以 ,甚至插件的初始化 fifl 没有被 用时。这 发生的,如果另一个插件首先初始化˝执行˙一个操作,比如创建一个PDF´,这 引起一个notification被发送。插件‹›准备好 确 抓住notifications,只要ł它 ø˙。3.重置 的Acrobat API的 重置HFT方•。相关¿息 `第174ı的 Replacing HFT methods”。:这 一个插件 以 入HFT或重置标准API方•的 一Ł 。插件 以在º时łnotifications ø,或以 的 何时候。初始化:Acrobat或Adobe Reader˚œ 用每个插件的PluginImportReplaceAndRegister 方•之 ,继续 用每个插件的PluginInit 序。插件 以 用 的初始化 序用来钩住Acrobat的用 口,增加菜单 目,工具 按钮,窗口,等等。也 以在插件运行时ª Acrobat的用 口。如果你的插件需要在 有的插件被初始化 规划一个 ,它应æłAVAppDidInitialize 知 ø。这个 知 被 用,当Acrobat已经˚ 初始化˝˛将要进入它的事件循环时。卸载:插件的PluginUnload 序应æ 插件分 的 有 ,˝移除 有它 的用 口 动。Acrobat 用这个 序,当它终 运行或其它 何¡¢ false时。这个 应æ执行下列 :1 移除˝ 有的菜单 目和其它用 口元素,HFTs,以及HFTServers。2 有 或 有其 分 的资 。,插件只有在Acrobat退 时卸载。一个插件的生命周⁄ 要:下列步骤描述˙一个插件的生命周⁄:1. 启动时,Adobe Reader或Acrobat搜索它的插件目录,查找插件 件。2. 对于每个插件 件,Adobe Reader或Acrobat 尝试载入这个 件。如果插件被 载入,Adobe Reader或Acrobat 用PIMain.c 的fifl,˚ ¡¢ 。3. Adobe Reader或Acrobat按如下顺序 用 fifl:●PluginExportHFTs●PluginImportReplaceAndRegister●PluginInit这个顺序建立˙关联,在插件和Adobe Reader或Acrobat之¥,也在插件和 何其它插件之¥。一旦 有的插件被载入,Adobe Reader或Acrobat继续它的自载入 和启动用 口。它‚ 何插件提供的工具添加 工具 和菜单 目上,然 启动用 对话。第2节 用 fiflAcrobat或Adobe Reader 用你定¶的用来˚ »定 的 fifl。例如,当用 点击一个位于工具 上的按钮时,一个 fifl就被 用˙。相关¿息 `第105ı的 Creating toolbar button callback functions”。要创建一个 fifl,你 以 用ASCallbackCreateProto, ASCallbackCreateReplacement, 和ASCallbackCreateNotification方•,‚fifl‰ fifl˝执行类型检查。这 允许编译器决定 否ł一个»定的 fifl 用˙ 确的原型。关于这¨方•的¿息, ` ´ˆAcrobat and PDF Library API Reference˜。类型检查只在这时发生 --- 如果宏定¶DEBUG被设置ł1,当你的插件被编译时。确定它在你的开发环境 被适当 设置,˝˛在你建立插件的 ø版本时移除它。下述 例子ƒ§˙创建一个 fifl的句•:AVExecuteProc ExecProcPtr = NULL;ExecProcPtr= ASCallbackCreateProto(AVExecuteProc, 宏定¶ASCallbackCreateProto 一个»定类型的 fifl,用来 用用 自定¶的fifl,fifl的 址作ł第二个 fl被„”。在这个例子 ,fiflShowMessage被‰ ł一个 fifl,ShowMessage 一个»定动作发生时被 用的用 自定¶fifl。宏定¶ASCallbackCreateProto 一个»向fifl的»…,ºfifl 被插件 用或被Acrobat,Adobe Reader 用。如果不ß需要, 用ASCallbackDestroy方•除掉 fifl。有的 fifl‹›用Pascal 用惯例˘§。ł˙ 你的 在平台¥ 用, 用ACCB1 和 ACCB2 宏定¶˘§你的 有的 fifl:static ACCB1 const char* ACCB2 ShowMessage(Thing*?foo);第3节 NotificationsAcrobat core API 提供一个 知ŁØ,以便插件 够与Acrobat或Adobe Reader同步动作。Notifications 插件 够» 自currency1对一个特定的时¥感兴趣 比如一个 被更 ˙ ,˝˛在每次事件发生的时候,提供一个 序 Acrobat 用。相关¿息 `第151ı Registering for Event Notifications”。第4节 Handling events你 以 用Acrobat core API操作不同类型的事件。1 鼠标点击:2 œ光标:3 键按下:第5节 用插件前缀第6节 ª Acrobat或Adobe Reader用 口第7节 获取和 ø对象第8节 试插件第9节 ı浏览层第10节 最小化的屏幕重画第11节 在PDF 件 储私人fl†第12节 从PDF ´对象 fl†Acrobat的定¶:The Acrobat menu bar --- 菜单 ,Windows 的 菜单 。An Acrobat menu --- 菜单, 菜单 的下一级,就 命令的列 ,每个菜单 以包含子菜单。A menu command --- 菜单命令,菜单的末级,点击 执行相应命令。第6章 创建菜单和菜单命令第2节 菜单增加菜单命令你 以 用Acrobat core API 一个已 在的菜单增加一个新的菜单命令。例如,你 以添加一个在Acrobat SDK 已命名的菜单命令 Adobe Reader或Acrobat菜单 的高级菜单 目。ł˙ 一个已在的菜单增加一个新菜单命令, 照下面的方•:1. 找 Adobe Reader或Acrobat菜单 被AVmenubar对象描述 , 用AVAppGetMenubar方•:AVMenubar Themenubar = AVAppGetMenubar();2. 找 将要包含新菜单命令的菜单, 用AVMenubarAcquireMenuByName方•,˝„”下列 fl:1 AVmenubar对象 --- 描述菜单 .2 menu的名字. 例如, 对于‘File’菜单,
展开阅读全文
温馨提示:
金锄头文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档


电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号