技术开发 频道

将 ActiveX 控件集成到 SWT 应用程序

  在讨论如何在查看器应用程序中显示 PDF 文档之前,了解在 Adobe Acrobat Reader Active X( PDF.PdfCtrl.5 )组件中实际上可以使用哪些命令是有用的。样本代码软件包包括了由 IBM 开发的类。该类列出了 ActiveX 控件所公开的所有公用命令。

  要枚举用于 PDF.PdfCtrl.5 控件的命令,请在 PDFViewer 目录中执行下面的命令: ant activex 。

  如果您的环境配置正确,那么您应当会看到类似于下面这样的内容:

1 ...
2      [java]Functions for PDF.PdfCtrl.5 :
3       
4      [java]METHOD (id = 2) :
5      [java]     Signature   : boolean LoadFile([] String fileName)
6      [java]     Description : null
7      [java]     Help File   : null
8       
9      [java]METHOD (id = 3) :
10      [java]     Signature   : void setShowToolbar([] boolean On)
11      [java]     Description : null
12      [java]     Help File   : null
13       
14      [java]METHOD (id = 4) :
15      [java]     Signature   : void gotoFirstPage()
16      [java]     Description : null
17      [java]     Help File   : null
18 ...

  要查看用于任何其它 ActiveX 控件的命令,只要编辑包含在源代码中的 build.xml 文件,并用一些其它 ActiveX 的程序标识符替换该类的参数。下面的 Ant 目标说明了要插入控件的程序标识符的位置。

  清单 3. 编辑 build.xml 文件

1 ...
2       <target name="activex" depends="package-common">
3             <java classname="Main" fork="true">
4                      <jvmarg value="-Djava.library.path=${eclipse.dir}windows"/>
5                       <classpath>
6                         <pathelement location="${dist.dir}/pdfviewer.jar"/>
7                               <fileset dir="${eclipse.dir}" includes="*.jar"/>
8                               <fileset dir="${eclipse.dir}windows" includes="*.jar"/>
9                       </classpath>
10                       <arg value="<insert some program identifier>"/>
11             </java>
12       </target>
13 ...
14

  从该类输出的第一个命令是 LoadFile。让我们研究一下如何在 PDF 查看器应用程序中应用这个命令。

  执行 ActiveX 命令

  一旦用户选择了一个 PDF 文档, PDFViewer 类就需要执行 ActiveX 控件中所公开的命令。下面 清单 4中的代码说明了使 ActiveX 控件装入用户所选的 PDF 文档所需的对象和方法。

  清单 4. PDFViewer 类

1 0   ...
2 1   public void showPdfControl()
3 2   {
4 3      site.doVerb(OLE.OLEIVERB_SHOW);
5 4   }
6 5
7 6   public void loadFile(String file)
8 7   {
9 8      showPdfControl();
10 9
11 10      int[] rgdispid = auto.getIDsOfNames(newString[]{"LoadFile"});
12 11      int dispIdMember = rgdispid[0];
13 12
14 13      Variant[] rgvarg = new Variant[1];
15 14      rgvarg[0] = new Variant(file);
16 15
17 16      Variant pVarResult =auto.invoke(dispIdMember,rgvarg);
18 17   }
19 18...
20

  让我们研究这一代码片段:

  用户选择 PDF 文件之后,执行第 6 行上的 loadFile 方法。

  第 8 行调用 showPdfControl 方法。必须使用 doVerb 命令激活 ActiveX 控件之后,该控件在应用程序中才可见。在 Eclipse 网站上标题为“ActiveX Support In SWT”的文章中可以找到动词的完整清单和概述。

  第 10 行到第 16 行调用 ActiveX 控件中的 LoadFile 命令。

  运行 PDF 查看器应用程序

  要测试和运行 PDF 查看器应用程序,请完成下列步骤:

  在将源代码解包的目录中执行下面这个命令: ant run 。

  执行 Ant 脚本之后,应当会出现 PDF 查看器应用程序。

  从 File 菜单选择“Open...”,以从工作站选择 PDF 文件。呈现所选的 PDF 文档。

  结束语

  SWT 库向 Java 开发人员提供一种功能强大的机制,使 Microsoft Windows ActiveX 控件集成到高度交互的客户机端应用程序。有了 SWT 对 ActiveX 控件和 OLE 文档的支持,研究如何创建外观极棒的且集成了本机窗口小部件和组件的应用程序是令人激动的。

  本文相关内容下载:样本 PDF 查看器应用程序  Java 2 SDK,标准版 1.4.1   Ant 1.5.3

0
相关文章