在文件格式和PDF之间转换

关于生成PDF服务

“生成PDF”服务可将本机文件格式转换为PDF。 它还可将PDF转换为其他文件格式,并优化PDF文档的大小。

“生成PDF”服务使用本机应用程序将以下文件格式转换为PDF。 除非另有说明,否则仅支持这些应用程序的德语、法语、英语和日语版本。 Windows仅 表示仅支持Windows Server® 2003和Windows Server 2008。

  • Microsoft Office 2003和2007,用于转换DOC、DOCX、RTF、TXT、XLS、XLSX、PPT、PPTX、VSD、MPP、MPPX、XPS和PUB(仅限Windows)

    注意

    Acrobat® 9.2或更高版本才能将Microsoft XPS格式转换为PDF。

  • Autodesk AutoCAD 2005、2006、2007、2008和2009,用于转换DWF、DWG和DXW(仅英文)

  • Corel WordPerfect 12和X4转换WPD、QPW、SHW(仅英语)

  • OpenOffice 2.0、2.4、3.0.1和3.1,用于转换ODT、ODS、ODP、ODG、ODF、SXW、SXI、SXC、SXD、DOC、DOCX、RTF、TXT、XLSX、PPT、PTX、VSD、MPX和PUB

    注意

    “生成PDF”服务不支持64位版本的OpenOffice。

  • Adobe Photoshop® CS2转换PSD(仅限Windows)

    注意

    Photoshop CS3和CS4不受支持,因为它们不支持Windows Server 2003或Windows Server 2008。

  • Adobe FrameMaker® 7.2和8转换FM(仅限Windows)

  • AdobePageMaker® 7.0以转换PMD、PM6、P65和PM(仅限Windows)

  • 第三方应用程序支持的本机格式(需要开发特定于该应用程序的设置文件)(仅限Windows)

“生成PDF”服务可将以下基于标准的文件格式转换为PDF。

  • 视频格式:SWF、FLV(仅限Windows)
  • 图像格式:JPEG、JPG、JP2、J2Kí、JPC、J2C、GIF、BMP、TIFF、TIF、PNG、JPF
  • HTML(Windows、Sun™ Solaris™和Linux®)

“生成PDF”服务将PDF转换为以下文件格式(仅限Windows):

  • 封装的PostScript(EPS)
  • HTML3.2
  • 带有CSS 1.0的HTML 4.01
  • DOC(Microsoft Word格式)
  • RTF
  • 文本(可访问和纯文本)
  • XML
  • 仅使用DeviceRGB色彩空间的PDF/A-1a
  • 仅使用DeviceRGB色彩空间的PDF/A-1b

“生成PDF”服务要求您执行以下管理任务:

  • 在托管AEM Forms的计算机上安装所需的本机应用程序
  • 在托管Adobe Acrobat的计算机上安装Acrobat Pro Professional或AEM Forms Extended 9.2
  • 执行安装后设置任务

使用JBoss Turnkey安装和部署AEM表单中介绍了这些任务。

您可以使用“生成PDF”服务完成以下任务:

  • 从本机文件格式转换为PDF。
  • 将HTML文档转换为PDF文档。
  • 将PDF文档转换为文件格式。
注意

有关生成PDF服务的更多信息,请参阅AEM Forms的服务参考

将Word文档转换为PDF文档

本节介绍如何使用生成PDF API以编程方式将Microsoft Word文档转换为PDF文档。

注意

有关其他文件格式的更多信息,请参阅添加对其他本机文件格式的支持

注意

有关生成PDF服务的更多信息,请参阅AEM Forms的服务参考

步骤摘要

要将Microsoft Word文档转换为PDF文档,请执行以下任务:

  1. 包括项目文件。
  2. 创建生成PDF客户端。
  3. 检索要转换为PDF文档的文件。
  4. 将文件转换为PDF文档。
  5. 检索结果。

包含项目文件

在开发项目中包含必需的文件。 如果您使用Java创建客户端应用程序,请包含必需的JAR文件。 如果您使用的是Web服务,请确保包含代理文件。

创建生成PDF客户端

在以编程方式执行“生成PDF”操作之前,请创建“生成PDF”服务客户端。 如果您使用的是Java API,请创建一个GeneratePdfServiceClient对象。 如果您使用的是Web服务API,请创建一个GeneratePDFServiceService对象。

检索要转换为PDF文档的文件

检索Microsoft Word文档以转换为PDF文档。

将文件转换为PDF文档

创建生成PDF服务客户端后,可以调用createPDF2方法。 此方法需要有关要转换的文档的信息,包括文件扩展名。

检索结果

将文件转换为PDF文档后,可以检索结果。 例如,将Word文件转换为PDF文档后,可以检索并保存PDF文档。

另请参阅

使用Java API将Word文档转换为PDF文档

使用Web服务API将Word文档转换为PDF文档

包括AEM Forms Java库文件

设置连接属性

生成PDF服务API快速入门

使用Java API将Word文档转换为PDF文档

使用生成PDF API(Java)将Microsoft Word文档转换为PDF文档:

  1. 包括项目文件。

    将客户端JAR文件(如adobe-generatepdf-client.jar)包含在您Java项目的类路径中。

  2. 创建生成PDF客户端。

    • 创建包含连接属性的ServiceClientFactory对象。
    • 使用其构造函数创建GeneratePdfServiceClient对象,并传递ServiceClientFactory对象。
  3. 检索要转换为PDF文档的文件。

    • 创建一个java.io.FileInputStream对象,该对象表示使用其构造函数转换的Word文件。 传递指定文件位置的字符串值。
    • 使用其构造函数创建com.adobe.idp.Document对象,并传递java.io.FileInputStream对象。
  4. 将文件转换为PDF文档。

    通过调用GeneratePdfServiceClient对象的createPDF2方法并传递以下值,将文件转换为PDF文档:

    • 表示要转换的文件的com.adobe.idp.Document对象。
    • 包含文件扩展名的java.lang.String对象。
    • java.lang.String对象,其中包含要在转换中使用的文件类型设置。 文件类型设置为不同文件类型(如.doc或.xls)提供转换设置。
    • java.lang.String对象,其中包含要使用的PDF设置的名称。 例如,您可以指定Standard
    • java.lang.String对象,其中包含要使用的安全设置的名称。
    • 可选com.adobe.idp.Document对象,其中包含在生成PDF文档时要应用的设置。
    • 可选的com.adobe.idp.Document对象,其中包含要应用于PDF文档的元数据信息。

    createPDF2方法返回一个CreatePDFResult对象,其中包含新的PDF文档和日志信息。 日志文件通常包含由转换请求生成的错误或警告消息。

  5. 检索结果。

    要获取PDF文档,请执行以下操作:

    • 调用CreatePDFResult对象的getCreatedDocument方法,该方法返回com.adobe.idp.Document对象。
    • 调用com.adobe.idp.Document对象的copyToFile方法,以从上一步中创建的对象中提取PDF文档。

    如果使用createPDF2方法获取日志文档(不适用于HTML转换),请执行以下操作:

    • 调用CreatePDFResult对象的getLogDocument方法。 这会返回com.adobe.idp.Document对象。
    • 调用com.adobe.idp.Document对象的copyToFile方法以提取日志文档。

另请参阅

步骤摘要

快速入门(SOAP模式):使用Java API将Microsoft Word文档转换为PDF文档

包括AEM Forms Java库文件

设置连接属性

使用Web服务API将Word文档转换为PDF文档

使用生成PDF API(Web服务)将Microsoft Word文档转换为PDF文档:

  1. 包括项目文件。

    创建使用MTOM的Microsoft .NET项目。 确保使用以下WSDL定义:http://localhost:8080/soap/services/GeneratePDFService?WSDL&lc_version=9.0.1

    注意

    localhost替换为托管AEM Forms的服务器的IP地址。

  2. 创建生成PDF客户端。

    • 使用其默认构造函数创建GeneratePDFServiceClient对象。

    • 使用System.ServiceModel.EndpointAddress构造函数创建GeneratePDFServiceClient.Endpoint.Address对象。 将指定WSDL的字符串值传递给AEM Forms服务(例如http://localhost:8080/soap/services/GeneratePDFService?blob=mtom。) 您无需使用lc_version属性。 但是,请指定?blob=mtom

    • 通过获取GeneratePDFServiceClient.Endpoint.Binding字段的值,创建System.ServiceModel.BasicHttpBinding对象。 将返回值转换为BasicHttpBinding

    • System.ServiceModel.BasicHttpBinding对象的MessageEncoding字段设置为WSMessageEncoding.Mtom。 此值可确保使用MTOM。

    • 通过执行以下任务,启用基本HTTP身份验证:

      • 将AEM表单用户名分配给字段GeneratePDFServiceClient.ClientCredentials.UserName.UserName
      • 为字段GeneratePDFServiceClient.ClientCredentials.UserName.Password分配相应的密码值。
      • 将常量值HttpClientCredentialType.Basic分配给字段BasicHttpBindingSecurity.Transport.ClientCredentialType
      • 将常量值BasicHttpSecurityMode.TransportCredentialOnly分配给字段BasicHttpBindingSecurity.Security.Mode
  3. 检索要转换为PDF文档的文件。

    • 使用BLOB对象的构造函数创建对象。 BLOB对象用于存储要转换为PDF文档的文件。
    • 通过调用System.IO.FileStream对象的构造函数创建对象。 传递一个字符串值,以表示要转换的文件位置以及打开文件的模式。
    • 创建用于存储System.IO.FileStream对象内容的字节数组。 您可以通过获取System.IO.FileStream对象的Length属性来确定字节数组的大小。
    • 通过调用System.IO.FileStream对象的Read方法并传递要读取的字节数组、开始位置和流长度,用流数据填充字节数组。
    • 通过为MTOM属性分配字节数组的内容来填充BLOB对象。
  4. 将文件转换为PDF文档。

    通过调用GeneratePDFServiceService对象的CreatePDF2方法并传递以下值,将文件转换为PDF文档:

    • 表示要转换的文件的BLOB对象。
    • 包含文件扩展名的字符串。
    • java.lang.String对象,其中包含要在转换中使用的文件类型设置。 文件类型设置为不同文件类型(如.doc或.xls)提供转换设置。
    • 包含要使用的PDF设置的字符串对象。 您可以指定Standard
    • 一个字符串对象,其中包含要使用的安全设置。 您可以指定No Security
    • 可选BLOB对象,其中包含在生成PDF文档时要应用的设置。
    • 可选的BLOB对象,其中包含要应用于PDF文档的元数据信息。
    • CreatePDF2方法填充的BLOB类型的输出参数。 CreatePDF2方法使用已转换的文档填充此对象。 (此参数值仅对于Web服务调用是必需的)。
    • CreatePDF2方法填充的BLOB类型的输出参数。 CreatePDF2方法使用日志文档填充此对象。 (此参数值仅对于Web服务调用是必需的)。
  5. 检索结果。

    • 通过将BLOB对象的MTOM字段分配给字节数组,检索已转换的PDF文档。 字节数组表示已转换的PDF文档。 确保使用BLOB对象作为createPDF2方法的输出参数。
    • 通过调用System.IO.FileStream对象的构造函数并传递表示已转换PDF文档的文件位置的字符串值,创建对象。
    • 通过调用System.IO.BinaryWriter对象的构造函数并传递System.IO.FileStream对象来创建该对象。
    • 通过调用System.IO.BinaryWriter对象的Write方法并传递字节数组,将字节数组的内容写入PDF文件。

另请参阅

步骤摘要

使用MTOM调用AEM Forms

使用SwaRef调用AEM Forms

将HTML文档转换为PDF文档

本节介绍如何使用生成PDF API以编程方式将HTML文档转换为PDF文档。

注意

有关生成PDF服务的更多信息,请参阅AEM Forms的服务参考

步骤摘要

要将HTML文档转换为PDF文档,请执行以下任务:

  1. 包括项目文件。
  2. 创建生成PDF客户端。
  3. 检索要转换为PDF文档的HTML内容。
  4. 将HTML内容转换为PDF文档。
  5. 检索结果。

包含项目文件

在开发项目中包含必需的文件。 如果您使用Java创建客户端应用程序,请包含必需的JAR文件。 如果您使用的是Web服务,请确保包含代理文件。

创建生成PDF客户端

在以编程方式执行“生成PDF”操作之前,必须创建“生成PDF”服务客户端。 如果您使用的是Java API,请创建一个GeneratePdfServiceClient对象。 如果您使用的是Web服务API,请创建GeneratePDFServiceService

检索要转换为PDF文档的HTML内容

引用要转换为PDF文档的HTML内容。 您可以引用HTML内容,如HTML文件或可通过URL访问的HTML内容。

将HTML内容转换为PDF文档

创建服务客户端后,可以调用相应的PDF创建操作。 此操作需要有关要转换的文档的信息,包括目标文档的路径。

检索结果

将HTML内容转换为PDF文档后,您可以检索结果并保存PDF文档。

另请参阅

使用Java API将HTML内容转换为PDF文档

使用Web服务API将HTML内容转换为PDF文档

包括AEM Forms Java库文件

设置连接属性

生成PDF服务API快速入门

使用Java API将HTML内容转换为PDF文档

使用生成PDF API(Java)将HTML文档转换为PDF文档:

  1. 包括项目文件。

    将客户端JAR文件(如adobe-generatepdf-client.jar)包含在您Java项目的类路径中。

  2. 创建生成PDF客户端。

    使用其构造函数创建GeneratePdfServiceClient对象,并传递包含连接属性的ServiceClientFactory对象。

  3. 检索要转换为PDF文档的HTML内容。

    通过创建字符串变量并分配指向HTML内容的URL来检索HTML内容。

  4. 将HTML内容转换为PDF文档。

    调用GeneratePdfServiceClient对象的htmlToPDF2方法并传递以下值:

    • java.lang.String对象,其中包含要转换的HTML文件的URL。
    • java.lang.String对象,其中包含要在转换中使用的文件类型设置。 文件类型设置可以包括尖角级别。
    • java.lang.String对象,其中包含要使用的安全设置的名称。
    • 可选com.adobe.idp.Document对象,其中包含在生成PDF文档时要应用的设置。 如果未提供此信息,则会根据前三个参数自动选择设置。
    • 可选的com.adobe.idp.Document对象,其中包含要应用于PDF文档的元数据信息。
  5. 检索结果。

    htmlToPDF2方法返回一个HtmlToPdfResult对象,其中包含已生成的新PDF文档。 要获取新创建的PDF文档,请执行以下操作:

    • 调用HtmlToPdfResult对象的getCreatedDocument方法。 这会返回com.adobe.idp.Document对象。
    • 调用com.adobe.idp.Document对象的copyToFile方法,以从上一步中创建的对象中提取PDF文档。

另请参阅

将HTML文档转换为PDF文档

快速入门(SOAP模式):使用Java API将HTML内容转换为PDF文档

快速入门(SOAP模式):使用Java API将HTML内容转换为PDF文档

包括AEM Forms Java库文件

设置连接属性

使用Web服务API将HTML内容转换为PDF文档

使用生成PDF API(Web服务)将HTML内容转换为PDF文档:

  1. 包括项目文件。

    创建使用MTOM的Microsoft .NET项目。 确保使用以下WSDL定义:http://localhost:8080/soap/services/GeneratePDFService?WSDL&lc_version=9.0.1

    注意

    localhost替换为托管AEM Forms的服务器的IP地址。

  2. 创建生成PDF客户端。

    • 使用其默认构造函数创建GeneratePDFServiceClient对象。

    • 使用System.ServiceModel.EndpointAddress构造函数创建GeneratePDFServiceClient.Endpoint.Address对象。 将指定WSDL的字符串值传递给AEM Forms服务(例如http://localhost:8080/soap/services/GeneratePDFService?blob=mtom。) 您无需使用lc_version属性。 但是,请指定?blob=mtom

    • 通过获取GeneratePDFServiceClient.Endpoint.Binding字段的值,创建System.ServiceModel.BasicHttpBinding对象。 将返回值转换为BasicHttpBinding

    • System.ServiceModel.BasicHttpBinding对象的MessageEncoding字段设置为WSMessageEncoding.Mtom。 此值可确保使用MTOM。

    • 通过执行以下任务,启用基本HTTP身份验证:

      • 将AEM表单用户名分配给字段GeneratePDFServiceClient.ClientCredentials.UserName.UserName
      • 为字段GeneratePDFServiceClient.ClientCredentials.UserName.Password分配相应的密码值。
      • 将常量值HttpClientCredentialType.Basic分配给字段BasicHttpBindingSecurity.Transport.ClientCredentialType
      • 将常量值BasicHttpSecurityMode.TransportCredentialOnly分配给字段BasicHttpBindingSecurity.Security.Mode
  3. 检索要转换为PDF文档的HTML内容。

    通过创建字符串变量并分配指向HTML内容的URL来检索HTML内容。

  4. 将HTML内容转换为PDF文档。

    通过调用GeneratePDFServiceService对象的HtmlToPDF2方法将HTML内容转换为PDF文档,并传递以下值:

    • 包含要转换的HTML内容的字符串。
    • java.lang.String对象,其中包含要在转换中使用的文件类型设置。
    • 一个字符串对象,其中包含要使用的安全设置。
    • 可选BLOB对象,其中包含在生成PDF文档时要应用的设置。
    • 可选的BLOB对象,其中包含要应用于PDF文档的元数据信息。
    • CreatePDF2方法填充的BLOB类型的输出参数。 CreatePDF2方法使用已转换的文档填充此对象。 (此参数值仅对于Web服务调用是必需的)。
  5. 检索结果。

    • 通过将BLOB对象的MTOM字段分配给字节数组,检索已转换的PDF文档。 字节数组表示已转换的PDF文档。 确保使用BLOB对象作为HtmlToPDF2方法的输出参数。
    • 通过调用System.IO.FileStream对象的构造函数并传递表示已转换PDF文档的文件位置的字符串值,创建对象。
    • 通过调用System.IO.BinaryWriter对象的构造函数并传递System.IO.FileStream对象来创建该对象。
    • 通过调用System.IO.BinaryWriter对象的Write方法并传递字节数组,将字节数组的内容写入PDF文件。

另请参阅

将HTML文档转换为PDF文档

使用MTOM调用AEM Forms

使用SwaRef调用AEM Forms

将PDF文档转换为非图像格式

本节介绍如何使用生成PDF Java API和Web服务API以编程方式将PDF文档转换为RTF文件,这是非图像格式的一个示例。 其他非图像格式包括HTML、文本、DOC和EPS。 将PDF文档转换为RTF时,请确保PDF文档不包含表单元素,如提交按钮。 表单元素不会转换。

注意

有关生成PDF服务的更多信息,请参阅AEM Forms的服务参考

步骤摘要

要将PDF文档转换为任何受支持的类型,请执行以下步骤:

  1. 包括项目文件。
  2. 创建生成PDF客户端。
  3. 检索要转换的PDF文档。
  4. 转换PDF文档。
  5. 保存已转换的文件。

包含项目文件

在开发项目中包含必需的文件。 如果您使用Java创建客户端应用程序,请包含必需的JAR文件。 如果您使用的是Web服务,请确保包含代理文件。

创建生成PDF客户端

在以编程方式执行“生成PDF”操作之前,必须创建“生成PDF”服务客户端。 如果您使用的是Java API,请创建一个GeneratePdfServiceClient对象。 如果您使用的是Web服务API,请创建一个GeneratePDFServiceService对象。

检索要转换的PDF文档

检索PDF文档以转换为非图像格式。

转换PDF文档

创建服务客户端后,可以调用PDF导出操作。 此操作需要有关要转换的文档的信息,包括目标文档的路径。

保存已转换的文件

保存已转换的文件。 例如,如果将PDF文档转换为RTF文件,请将转换后的文档保存为RTF文件。

另请参阅

使用Java API将PDF文档转换为RTF文件

使用Web服务API将PDF文档转换为RTF文件

包括AEM Forms Java库文件

设置连接属性

生成PDF服务API快速入门

使用Java API将PDF文档转换为RTF文件

使用生成PDF API(Java)将PDF文档转换为RTF文件:

  1. 包括项目文件。

    将客户端JAR文件(如adobe-generatepdf-client.jar)包含在您Java项目的类路径中。

  2. 创建生成PDF客户端。

    使用其构造函数创建GeneratePdfServiceClient对象,并传递包含连接属性的ServiceClientFactory对象。

  3. 检索要转换的PDF文档。

    • 创建一个java.io.FileInputStream对象,该对象表示要使用其构造函数转换的PDF文档。 传递指定PDF文档位置的字符串值。
    • 使用其构造函数创建com.adobe.idp.Document对象,并传递java.io.FileInputStream对象。
  4. 转换PDF文档。

    调用GeneratePdfServiceClient对象的exportPDF2方法并传递以下值:

    • 表示要转换的PDF文件的com.adobe.idp.Document对象。
    • java.lang.String对象,其中包含要转换的文件的名称。
    • java.lang.String对象,其中包含Adobe PDF设置的名称。
    • 一个ConvertPDFFormatType对象,用于指定转换的目标文件类型。
    • 可选com.adobe.idp.Document对象,其中包含在生成PDF文档时要应用的设置。

    exportPDF2方法返回一个包含已转换文件的ExportPDFResult对象。

  5. 转换PDF文档。

    要获取新创建的文件,请执行以下操作:

    • 调用ExportPDFResult对象的getConvertedDocument方法。 这会返回com.adobe.idp.Document对象。
    • 调用com.adobe.idp.Document对象的copyToFile方法以提取新文档。

另请参阅

步骤摘要

快速入门(SOAP模式):使用Java API将HTML内容转换为PDF文档

包括AEM Forms Java库文件

设置连接属性

使用Web服务API将PDF文档转换为RTF文件

使用“生成PDF API(Web服务)”将PDF文档转换为RTF文件:

  1. 包括项目文件。

    创建使用MTOM的Microsoft .NET项目。 确保使用以下WSDL定义:http://localhost:8080/soap/services/GeneratePDFService?WSDL&lc_version=9.0.1

    注意

    localhost替换为托管AEM Forms的服务器的IP地址。

  2. 创建生成PDf客户端。

    • 使用其默认构造函数创建GeneratePDFServiceClient对象。

    • 使用System.ServiceModel.EndpointAddress构造函数创建GeneratePDFServiceClient.Endpoint.Address对象。 将指定WSDL的字符串值传递给AEM Forms服务(例如http://localhost:8080/soap/services/GeneratePDFService?blob=mtom。) 您无需使用lc_version属性。 但是,请指定?blob=mtom

    • 通过获取GeneratePDFServiceClient.Endpoint.Binding字段的值,创建System.ServiceModel.BasicHttpBinding对象。 将返回值转换为BasicHttpBinding

    • System.ServiceModel.BasicHttpBinding对象的MessageEncoding字段设置为WSMessageEncoding.Mtom。 此值可确保使用MTOM。

    • 通过执行以下任务,启用基本HTTP身份验证:

      • 将AEM表单用户名分配给字段GeneratePDFServiceClient.ClientCredentials.UserName.UserName
      • 为字段GeneratePDFServiceClient.ClientCredentials.UserName.Password分配相应的密码值。
      • 将常量值HttpClientCredentialType.Basic分配给字段BasicHttpBindingSecurity.Transport.ClientCredentialType
      • 将常量值BasicHttpSecurityMode.TransportCredentialOnly分配给字段BasicHttpBindingSecurity.Security.Mode
  3. 检索要转换的PDF文档。

    • 使用BLOB对象的构造函数创建对象。 BLOB对象用于存储已转换的PDF文档。
    • 通过调用System.IO.FileStream对象的构造函数并传递一个字符串值来创建对象,该字符串值表示PDF文档的文件位置以及打开文件的模式。
    • 创建用于存储System.IO.FileStream对象内容的字节数组。 您可以通过获取System.IO.FileStream对象的Length属性来确定字节数组的大小。
    • 通过调用System.IO.FileStream对象的Read方法并传递要读取的字节数组、开始位置和流长度,用流数据填充字节数组。
    • 通过为MTOM属性分配字节数组的内容来填充BLOB对象。
  4. 转换PDF文档。

    调用GeneratePDFServiceServiceWse对象的ExportPDF2方法并传递以下值:

    • 表示要转换的PDF文件的BLOB对象。
    • 一个字符串,其中包含要转换的文件的路径名。
    • 指定文件位置的java.lang.String对象。
    • 一个字符串对象,用于指定转换的目标文件类型。 指定RTF
    • 可选BLOB对象,其中包含在生成PDF文档时要应用的设置。
    • ExportPDF2方法填充的BLOB类型的输出参数。 ExportPDF2方法使用已转换的文档填充此对象。 (此参数值仅对于Web服务调用是必需的)。
  5. 保存已转换的文件。

    • 通过将BLOB对象的MTOM字段分配给字节数组,检索已转换的RTF文档。 字节数组表示已转换的RTF文档。 确保使用BLOB对象作为ExportPDF2方法的输出参数。
    • 通过调用System.IO.FileStream对象的构造函数创建对象。 传递表示RTF文件位置的字符串值。
    • 通过调用System.IO.BinaryWriter对象的构造函数并传递System.IO.FileStream对象来创建该对象。
    • 通过调用System.IO.BinaryWriter对象的Write方法并传递字节数组,将字节数组的内容写入RTF文件。

另请参阅

步骤摘要

使用MTOM调用AEM Forms

使用SwaRef调用AEM Forms

添加对其他本机文件格式的支持

本节介绍如何添加对其他本机文件格式的支持。 它概述了“生成PDF”服务与本机应用程序之间的交互情况,该服务使用这些应用程序将本机文件格式转换为PDF。

本节还将介绍以下内容:

  • 如何修改“生成PDF”服务对本机应用程序的响应,该产品已使用这些应用程序将本机文件格式转换为PDF
  • “生成PDF”服务、“生成PDF”服务应用程序监视器(AppMon)组件与本机应用程序(如Microsoft Word)之间的交互
  • XML语法在这些交互中所发挥的作用

组件交互

“生成PDF”服务通过调用与文件格式相关联的应用程序,然后与应用程序交互以使用默认打印机打印文档来转换本机文件格式。 默认打印机必须设置为Adobe PDF打印机。

此插图显示了与本机应用程序支持相关的组件和驱动程序。 它还提到影响交互的XML语法。

用于本机文件转换的组件交互

本文档使用术语​本机应用程序​来指示用于生成本机文件格式(如Microsoft Word)的应用程序。

** AppMon是一个企业组件,它与本机应用程序进行交互的方式与用户在该应用程序显示的对话框中导航的方式相同。AppMon用于指示应用程序(如Microsoft Word)打开和打印文件的XML语法包含以下顺序任务:

  1. 通过选择“文件”>“打开”打开文件
  2. 确保显示“打开”对话框;如果没有,则处理错误
  3. 在“文件名”字段中提供文件名,然后单击“打开”按钮
  4. 确保文件实际打开
  5. 通过选择“文件”>“打印”打开“打印”对话框
  6. 确保显示“打印”对话框

AppMon使用标准的Win32 API与第三方应用程序进行交互,以便传输UI事件(如按键和鼠标单击),这对于控制这些应用程序从中生成PDF文件非常有用。

由于这些Win32 API存在限制,AppMon无法将这些UI事件分派到某些特定类型的窗口,如浮动菜单栏(在某些应用程序中如TextPad),以及某些类型的对话框,这些对话框的内容无法使用Win32 API进行检索。

易于直观地识别浮动菜单栏;但是,仅仅通过视觉检查就无法识别特殊类型的对话。 您需要第三方应用程序(如Microsoft Spy++(Microsoft Visual C++开发环境的一部分)或其等效的WinID(可从https://www.dennisbabkin.com/php/download.php?what=WinID免费下载)来检查对话框,以确定AppMon是否能够使用标准Win32 API与它进行交互。

如果WinID能够提取对话框内容(如文本、子窗口、窗口类ID等),则AppMon也可以执行相同的操作。

此表列出了打印本机文件格式时使用的信息类型。

信息类型

描述

修改/创建与本机文件相关的条目

管理设置

包括PDF设置、安全设置和文件类型设置。

文件类型设置将文件扩展名与相应的本机应用程序相关联。 文件类型设置还指定用于打印本机文件的本机应用程序设置。

要更改已受支持的本机应用程序的设置,系统管理员在管理控制台中设置“文件类型设置”。

要添加对新本机文件格式的支持,必须手动编辑文件。 (请参阅添加或修改对本机文件格式的支持。)

脚本

指定“生成PDF”服务与本机应用程序之间的交互。 此类交互通常指导应用程序将文件打印到Adobe PDF驱动程序。

脚本包含指示本机应用程序打开特定对话框的说明,以及这些说明对这些对话框中的字段和按钮提供特定响应。

“生成PDF”服务包含所有受支持本机应用程序的脚本文件。 您可以使用XML编辑应用程序修改这些文件。

要添加对新本机应用程序的支持,必须创建新的脚本文件。 (请参阅为本机应用程序创建或修改附加的对话框XML文件。)

常规对话框说明

指定如何响应对多个应用程序通用的对话框。 这些对话框由操作系统、帮助程序应用程序(如PDFMaker)和驱动程序生成。

包含此信息的文件为appmon.global.en_US.xml。

请勿修改此文件。

特定于应用程序的对话框说明

指定如何响应特定于应用程序的对话框。

包含此信息的文件是appmon。[appname].dialog。[区域设置].xml(例如appmon.word.en_US.xml)。

请勿修改此文件。

要为新的本机应用程序添加对话框说明,请参阅为本机应用程序创建或修改其他对话框XML文件

其他特定于应用程序的对话框说明

指定特定于应用程序的对话框说明的覆盖和添加。 本节介绍此类信息的示例。

包含此信息的文件是appmon。[appname].addition。[区域设置].xml。appmon.addition.en_US.xml就是一个示例。

可以使用XML编辑应用程序创建和修改此类文件。 (请参阅为本机应用程序创建或修改附加的对话框XML文件。)

重要信息:您必须为服务器将支持的每个本机应用程序创建其他特定于应用程序的对话框说明。

关于脚本和对话框XML文件

脚本XML文件指导“生成PDF”服务以用户在应用程序对话框中导航的方式浏览应用程序对话框。 脚本XML文件还通过执行如下操作来指示“生成PDF”服务响应对话框:按按钮、选择或取消选中复选框,或选择菜单项。

相反,对话框XML文件只是对对话框做出响应,而对话框的操作类型与脚本XML文件中使用的操作类型相同。

对话框和窗口元素术语

本节和下节将根据描述的透视图,对对话框及其包含的组件使用不同的术语。 对话框组件是按钮、字段和组合框等项目。

当本节和下一节从用户的角度描述对话框及其组件时,会使用诸如​对话框按钮字段​和​组合框​之类的术语。

当本节和下一节从对话框及其内部表示的角度描述它们及其组件时,将使用术语​窗口元素。 窗口元素的内部表示是一个层次结构,其中每个窗口元素实例都由标签标识。 窗口元素实例还描述其物理特征和行为。

从用户的角度来看,对话框及其组件显示的行为不同,其中某些对话框元素在激活之前处于隐藏状态。 从内部代表的角度来看,不存在此类行为问题。 例如,对话框的内部表示形式与其包含的组件的内部表示形式类似,但是组件嵌套在对话框中除外。

本节介绍提供AppMon的说明的XML元素。 这些元素具有dialog元素和window元素等名称。 本文档使用等宽字体来区分XML元素。 *dialog*元素标识了XML脚本文件可能有意或无意地显示的对话框。 *window*元素标识窗口元素(对话框或对话框的组件)。

层级

此图显示了脚本和对话框XML的层次结构。 脚本XML文件符合script.xsd架构,该架构包含(在XML意义上)window.xsd架构。 同样,对话框XML文件符合dialogs.xsd架构,该架构还包含window.xsd架构。

as_as_xml_hierarchy

脚本和对话框XML的层次结构

脚本XML文件

脚本XML文件​指定一系列步骤,这些步骤指导本机应用程序导航到某些窗口元素,然后提供对这些元素的响应。 大多数响应是与用户在相应对话框中提供的字段、组合框或按钮相对应的文本或击键。

“生成PDF”服务对脚本XML文件的支持旨在引导本机应用程序打印本机文件。 但是,脚本XML文件可用于完成用户与本机应用程序对话框交互时可以执行的任何任务。

脚本XML文件中的步骤按顺序执行,而不会产生任何分支机会。 唯一支持的条件测试是超时/重试,如果某个步骤在特定时间段内和经过特定数量的重试后未成功完成,则会导致脚本终止。

除了按顺序执行的步骤之外,还按顺序执行步骤中的说明。 您必须确保步骤和说明反映用户执行这些相同步骤的顺序。

脚本XML文件中的每个步骤都标识在成功执行该步骤的指令时应显示的窗口元素。 如果在执行脚本步骤时出现意外的对话框,则“生成PDF”服务将按照下一节中所述搜索对话框XML文件。

对话框XML文件

运行本机应用程序将显示不同的对话框,无论本机应用程序处于可见模式还是不可见模式,都会显示这些对话框。 对话框可由操作系统或应用程序本身生成。 当本机应用程序在“生成PDF”服务的控制下运行时,系统和本机应用程序对话框将显示在不可见的窗口中。

对话框XML文件​指定“生成PDF”服务如何响应系统或本机应用程序对话框。 对话框XML文件允许生成PDF服务以便于转换过程的方式响应未提示的对话框。

当系统或本机应用程序显示一个对话框,该对话框不由当前正在执行的脚本XML文件处理时,“生成PDF”服务会按此顺序搜索对话框XML文件,当它找到匹配项时停止:

  • appmon。[appname].additional.[locale].xml
  • appmon。[appname]。[locale].xml(请勿修改此文件。)
  • appmon.global.[locale].xml(请勿修改此文件。)

如果“生成PDF”服务找到对话框的匹配项,它会通过发送键击或为对话框指定的其他操作来取消该对话框。 如果对话框的说明指定了中止消息,则生成PDF服务会终止当前正在执行的作业并生成错误消息。 此类中止消息将在脚本XML语法的abortMessage元素中指定。

如果“生成PDF”服务遇到之前列出的任何文件中都未描述的对话框,则“生成PDF”服务会将该对话框的标题纳入日志文件条目。 当前正在执行的作业最终超时。 然后,您可以使用日志文件中的信息在本机应用程序的其他对话框XML文件中编写新说明。

添加或修改对本机文件格式的支持

本节介绍在支持其他本机文件格式或修改对已受支持的本机文件格式的支持时必须执行的任务。

在添加或修改支持之前,您必须完成以下任务。

选择用于识别窗口元素的工具

对话框和脚本XML文件要求您标识对话框或脚本元素所响应的窗口元素(对话框、字段或其他对话框组件)。 例如,在脚本调用本机应用程序的菜单后,脚本必须标识该菜单上要应用击键或操作的窗口元素。

您可以通过对话框标题栏中显示的标题轻松识别对话框。 但是,您必须使用诸如Microsoft Spy++之类的工具来识别较低级别的窗口元素。 较低级别的窗口元素可以通过各种属性进行识别,这些属性并不明显。 此外,每个本机应用程序可以不同地标识其窗口元素。 因此,可通过多种方式来识别窗口元素。 以下是考虑窗口元素标识的建议顺序:

  1. 如果字幕是唯一的,则描述本身
  2. 控制ID,对于给定对话框,它可能唯一,也可能不唯一
  3. 类名称,可能唯一,也可能不唯一

这三个属性中的任意一个或组合可用于标识窗口。

如果属性无法识别标题,则可以改用其相对于其父元素的索引来识别窗口元素。 index​指定窗口元素相对于其同级窗口元素的位置。 索引通常是识别组合框的唯一方法。

请注意以下问题:

  • Microsoft Spy通过使用与号(&)标识字幕的热键来显示字幕。 例如,Spy将一个“打印”对话框的标题显示为Pri&nt,表示热键为​n。 脚本和对话框XML文件中的标题必须忽略与号。
  • 某些字幕包括换行符。 生成PDF服务无法识别换行符。 如果标题包含换行符,请包含足够的标题以将其与其他菜单项区分开,然后对省略的部分使用正则表达式。 例如(^Long caption title$)。 (请参阅在题注属性中使用正则表达式。)
  • 对保留的XML字符使用字符实体(也称为转义序列)。 例如,对于与号,使用&;对于小于或大于符号,使用<>;对于撇号,使用&apos;;对于引号,使用&quot;

如果您计划处理对话框或脚本XML文件,则应安装应用程序Microsoft Spy++。

取消打包对话框和脚本文件

对话框和脚本文件位于appmondata.jar文件中。 您必须先取消打包此JAR文件,然后才能修改其中的任何文件或添加新脚本或对话框文件。 例如,假定您要添加对EditPlus应用程序的支持。 创建两个XML文件,名为appmon.editplus.script.en_US.xml和appmon.editplus.script.addition.en_US.xml。 必须将这些XML脚本添加到adobe-appmondata.jar文件中的以下两个位置,如下所述:

  • adobe-livecycle-native-jboss-x86_win32.ear > adobe-Native2PDFSvc.war\WEB-INF\lib > adobe-native.jar > Native2PDFSvc-native.jar\bin > adobe-appmondata.jar\com\adobe\appmon。 adobe-livecycle-native-jboss-x86_win32.ear文件位于*[AEM forms install directory]*configurationManager的导出文件夹中。 (如果AEM Forms部署在另一个J2EE应用程序服务器上,请将adobe-livecycle-native-jboss-x86_win32.ear文件替换为与您的J2EE应用程序服务器相对应的EAR文件。)
  • adobe-generatepdf-dsc.jar > adobe-appmondata.jar\com\adobe\appmon (adobe-appmondata.jar文件位于adobe-generatepdf-dsc.jar文件内)。 adobe-generatepdf-dsc.jar文件位于​[AEM forms安装目录]\deploy文件夹中。

将这些XML文件添加到adobe-appmondata.jar文件后,必须重新部署GeneratePDF组件。 要将对话框和脚本XML文件添加到adobe-appmondata.jar文件,请执行以下任务:

  1. 使用WinZip或WinRAR之类的工具,打开adobe-livecycle-native-jboss-x86_win32.earfile > adobe-Native2PDFSvc.war\WEB-INF\lib > adobe-native.jar > Native2PDFSvc-native.jar\bin > adobe-appmondata.jar文件。
  2. 将对话框和脚本XML文件添加到appmondata.jar文件,或修改此文件中的现有XML文件。 (请参阅创建或修改本机应用程序的脚本XML文件创建或修改本机应用程序的其他对话框XML文件。)
  3. 使用WinZip或WinRAR之类的工具,打开adobe-generatepdf-dsc.jar > adobe-appmondata.jar。
  4. 将对话框和脚本XML文件添加到appmondata.jar文件,或修改此文件中的现有XML文件。 (请参阅创建或修改本机应用程序的脚本XML文件创建或修改本机应用程序的其他对话框XML文件。) 在将XML文件添加到adobe-appmondata.jar文件后,将新的adobe-appmondata.jar文件放入adobe-generatepdf-dsc.jar文件中。
  5. 如果添加了对其他本机文件格式的支持,请创建一个系统环境变量,以提供应用程序的路径(请参阅创建环境变量以找到本机应用程序)。

重新部署GeneratePDF组件

  1. 登录到Workbench。
  2. 选择​Window > 显示视图 > 组件。 此操作会将“组件”视图添加到Workbench。
  3. 右键单击GeneratePDF组件,然后选择​停止组件
  4. 组件停止后,右键单击并选择卸载组件以将其删除。
  5. 右键单击​组件​图标,然后选择​安装组件
  6. 浏览并选择修改的adobe-generatepdf-dsc.jar文件,然后单击“打开”。 请注意, GeneratePDF组件旁边会显示一个红方形。
  7. 展开GeneratePDF组件,选择“服务描述符”,然后右键单击“生成PDF服务”并选择“激活服务”。
  8. 在出现的配置对话框中,输入适用的配置值。 如果将这些值留空,则使用默认配置值。
  9. 右键单击“生成PDF”并选择“启动组件”。
  10. 展开活动服务。 如果服务名称正在运行,则其旁边会显示一个绿色箭头。 否则,服务处于停止状态。
  11. 如果服务处于停止状态,请右键单击服务名称并选择“启动服务”。

为本机应用程序创建或修改脚本XML文件

如果要将文件定向到新的本机应用程序,则必须为该应用程序创建脚本XML文件。 如果要修改生成PDF服务与已受支持的本机应用程序交互的方式,则必须修改该应用程序的脚本。

脚本包含在本机应用程序的窗口元素中导航的说明,以及对这些元素提供特定响应的说明。 包含此信息的文件是appmon。[appname].script.[locale].xml.示例为appmon.notepad.script.en_US.xml。

确定脚本必须执行的步骤

使用本机应用程序,确定您必须导航的窗口元素以及打印文档时必须执行的每个响应。 请注意任何响应都产生的对话框。 这些步骤将类似于以下步骤:

  1. 选择“文件”>“打开”。
  2. 指定路径,然后单击“打开”。
  3. 在菜单栏上选择“文件”>“打印”。
  4. 指定打印机所需的属性。
  5. 选择“打印”并等待“另存为”对话框显示。 “生成PDF”服务需要“另存为”对话框来指定PDF文件的目标。

标识在题注属性中指定的对话框

使用Microsoft Spy++获取本机应用程序中窗口元素属性的标识。 您必须具有这些身份才能编写脚本。

在题注属性中使用正则表达式

您可以在字幕规范中使用正则表达式。 生成PDF服务使用java.util.regex.Matcher类支持正则表达式。 该实用程序支持java.util.regex.Pattern中描述的正则表达式。

在记事本横幅中,包含前面加有文件名的正则表达式

 <!-- The regular expression ".*Notepad" means any number of non-terminating characters followed by Notepad. -->
 <step>
     <expectedWindow>
         <window caption=".*Notepad"/>
     </expectedWindow>
 </step>

区分打印设置和打印设置的正则表达式

 <!-- This regular expression differentiates the Print dialog box from the Print Setup dialog box. The "^" specifies the beginning of the line, and the "$" specifies the end of the line. -->
 <windowList>
     <window controlID="0x01" caption="^Print$" action="press"/>
 </windowList>

对窗口和windowList元素排序

必须按如下方式对windowwindowList元素进行排序:

  • 当多个window元素在windowListdialog元素中显示为子元素时,按降序排列这些window元素,caption名称的长度表示该顺序中的位置。
  • 当在window元素中显示多个windowList元素时,请按降序顺序对这些windowList元素进行排序,第一个indexes/元素的caption属性的长度表示该顺序中的位置。

对对话框文件中的窗口元素进行排序

 <!-- The caption attribute in the following window element is 40 characters long. It is the longest caption in this example, so its parent window element appears before the others. -->
 <window caption="Unexpected Failure in DebugActiveProcess">
     <…>
 </window>

 <!-- Caption length is 33 characters. -->
 <window caption="Adobe Acrobat - License Agreement">
     <…>
 </window>

 <!-- Caption length is 33 characters. -->
 <window caption="Microsoft Visual.*Runtime Library">
     <…>
 </window>

 <!-- The caption attribute in the following window element is 28 characters long. It is the shortest caption in this example, so its parent window element appears after the others. -->
 <window caption="Adobe Acrobat - Registration">
     <…>
 </window>

对windowList元素中的窗口元素排序

 <!-- The caption attribute in the following indexes element is 56 characters long. It is the longest caption in this example, so its parent window element appears before the others. -->
 <windowList>
     <window caption="Can&apos;t exit design mode because.* cannot be created"/>
     <window className="Button" caption="OK" action="press"/>
 </windowList>
 <windowList>
     <window caption="Do you want to continue loading the project?"/>
     <window className="Button" caption="No" action="press"/>
 </windowList>
 <windowList>
     <window caption="The macros in this project are disabled"/>
     <window className="Button" caption="OK" action="press"/>
 </windowList>

为本机应用程序创建或修改其他对话框XML文件

如果您为以前不支持的本机应用程序创建脚本,则还必须为该应用程序创建一个额外的对话框XML文件。 AppMon使用的每个本机应用程序必须只有一个额外的对话框XML文件。 即使没有未请求的对话框,也需要附加的对话框XML文件。 附加的对话框必须至少包含一个window元素,即使该window元素只是占位符。

注意

在此上下文中,“附加”一词表示应用程序的内容。[应用程序名称].addition。[locale].xml文件。此类文件指定对话XML文件的覆盖和添加。

您还可以为本机应用程序修改附加的对话框XML文件,以实现以下目的:

  • 使用其他响应覆盖应用程序的对话框XML文件
  • 向该应用程序的对话框XML文件中未寻址的对话框添加响应

标识其他dialogXML文件的文件名为appmon。[appname].addition.[locale].xml.例如appmon.excel.addition.en_US.xml。

其他对话框XML文件的名称必须使用appmon格式。[应用程序名称].addition。[locale].xml,其中 ** applicationname必须与XML配置文件和脚本中使用的应用程序名称完全匹配。

注意

native2pdfconfig.xml配置文件中指定的任何通用应用程序都不具有主对话框XML文件。 添加或修改对本机文件格式的支持部分介绍了此类规范。

必须对windowList元素进行排序,这些元素在window元素中显示为子元素。 (请参阅对窗口和windowList元素排序。)

修改常规对话框XML文件

您可以修改常规对话框XML文件,以响应由系统生成的对话框或响应多个应用程序共有的对话框。

在XML配置文件中添加文件类型条目

此过程说明如何更新“生成PDF”服务配置文件,以将文件类型与本机应用程序关联。 要更新此配置文件,必须使用管理控制台将配置数据导出到文件。 配置数据的默认文件名为native2pdfconfig.xml。

更新生成PDF服务配置文件

  1. 选择​Home > Services > Adobe PDF Generator > 配置文件,然后选择​导出配置
  2. 根据需要,在native2pdfconfig.xml文件中修改filetype-settings元素。
  3. 选择​Home > Services > Adobe PDF Generator >配置文件,然后选择​导入配置。 配置数据会导入到“生成PDF”服务中,以替换以前的设置。
注意

应用程序的名称指定为GenericApp元素name属性的值。 此值必须与为该应用程序开发的脚本中指定的相应名称完全匹配。 同样,GenericApp元素的displayName属性应与相应脚本的expectedWindow窗口标题完全匹配。 在解析出现在displayNamecaption属性中的任何正则表达式后,将评估此类等效性。

在此示例中,修改了“生成PDF”服务提供的默认配置数据,以指定应使用记事本(而非Microsoft Word)处理文件扩展名为.txt的文件。 在此修改之前,将Microsoft Word指定为应处理此类文件的本机应用程序。

将文本文件定向到记事本的修改(native2pdfconfig.xml)

 <filetype-settings>

 <!-- Some native app file types were omitted for brevity. -->
 <!-- The following GenericApp element specifies Notepad as the native application that should be used to process files that have a txt file name extension. -->
             <GenericApp
                 extensions="txt"
                 name="Notepad" displayName=".*Notepad"/>
             <GenericApp
                 extensions="wpd"
                 name="WordPerfect" displayName="Corel WordPerfect"/>
             <GenericApp extensions="pmd,pm6,p65,pm"
                 name="PageMaker" displayName="Adobe PageMaker"/>
             <GenericApp extensions="fm"
                 name="FrameMaker" displayName="Adobe FrameMaker"/>
             <GenericApp extensions="psd"
                 name="Photoshop" displayName="Adobe Photoshop"/>
         </settings>
     </filetype-settings>

创建环境变量以找到本机应用程序

创建一个环境变量,以指定本机应用程序可执行文件的位置。 变量必须使用格式​[applicationname]_PATH,其中​applicationname​必须与XML配置文件和脚本中使用的应用程序名称完全匹配,并且其中路径包含双引号的可执行文件路径。 此类环境变量的示例为Photoshop_PATH

创建新环境变量后,必须重新启动部署了“生成PDF”服务的服务器。

在Windows XP环境中创建系统变量

  1. 选择​控制面板>系统
  2. 在“系统属性”对话框中,单击​Advanced​选项卡,然后单击​Environment Variables
  3. 在“环境变量”对话框的“系统变量”下,单击​New
  4. 在“新建系统变量”对话框的​变量名称​框中,键入使用​[applicationname]_PATH格式的名称。
  5. 在​变量值​框中,键入应用程序可执行文件的完整路径和文件名,然后单击​确定。 例如,类型:c:\windows\Notepad.exe
  6. 在“环境变量”对话框中,单击​确定

从命令行创建系统变量

  1. 在命令行窗口中,使用以下格式键入变量定义:

             [applicationname]_PATH=[Full path name]
    

    例如,类型:NotePad_PATH=C:\WINDOWS\NOTEPAD.EXE

  2. 启动新的命令行提示,以使系统变量生效。

XML文件

AEM Forms包含示例XML文件,这些文件会导致“生成PDF”服务使用记事本处理任何文件扩展名为.txt的文件。 此代码包含在此部分中。 此外,您必须进行本节中描述的其他修改。

其他对话框XML文件

此示例包含记事本应用程序的其他对话框。 除了“生成PDF”服务指定的对话框之外,还可以使用这些对话框。

记事本对话框(appmon.notepad.addition.en_US.xml)

 <dialogs app="Notepad" locale="en_US" version="7.0" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="dialogs.xsd">
     <window caption="Caption Title">
         <windowList>
             <window className="Button" caption="OK" action="press"/>
         </windowList>
     </window>
 </dialogs>

脚本XML文件

此示例指定“生成PDF”服务应如何与记事本交互,以使用Adobe PDF打印机打印文件。

记事本脚本XML文件(appmon.notepad.script.en_US.xml)

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!--
*
* ADOBE CONFIDENTIAL
* ___________________
* Copyright 2004 - 2005 Adobe Systems Incorporated
* All Rights Reserved.
*
* NOTICE:  All information contained herein is, and remains
* the property of Adobe Systems Incorporated and its suppliers,
* if any.  The intellectual and technical concepts contained
* herein are proprietary to Adobe Systems Incorporated and its
* suppliers and may be covered by U.S. and Foreign Patents,
* patents in process, and are protected by trade secret or copyright law.
* Dissemination of this information or reproduction of this material
* is strictly forbidden unless prior written permission is obtained
* from Adobe Systems Incorporated.
*-->

<!-- This file automates printing of text files via notepad to Adobe PDF printer. In order to see the complete hierarchy we recommend using the Microsoft Spy++ which details the properties of windows necessary to write scripts. In this sample there are total of eight steps-->

<application name="Notepad" version="9.0" locale="en_US" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="scripts.xsd">

    <!-- In this step we wait for the application window to appear -->
    <step>
        <expectedWindow>
            <window caption=".*Notepad"/>
        </expectedWindow>
    </step>

    <!-- In this step, we acquire the application window and send File->Open menu bar, menu item commands and the expectation is the windows Open dialog-->
    <step>
        <acquiredWindow>
            <window caption=".*Notepad">
                <virtualInput>
                    <menuBar>
                        <selection>
                            <name>File</name>
                        </selection>
                        <selection>
                            <name>Open...</name>
                        </selection>
                    </menuBar>
                </virtualInput>
            </window>
        </acquiredWindow>
        <expectedWindow>
            <window caption="Open"/>
        </expectedWindow>
    </step>

    <!-- In this step, we acquire the Open window and then select the 'Edit' widget and input the source path followed by clicking on the 'Open' button . The expectation of this 'action' is that the Open dialog will disappear -->
    <step>
        <acquiredWindow>
            <window caption="Open">
                <windowList>
                    <window className="ComboBoxEx32">
                        <windowList>
                            <window className="ComboBox">
                                <windowList>
                                <window className="Edit" action="inputSourcePath"/>
                                </windowList>
                            </window>
                        </windowList>
                    </window>
                </windowList>
                <windowList>
                    <window className="Button" caption="Open" action="press"/>
                </windowList>
            </window>
        </acquiredWindow>
        <expectedWindow>
            <window caption="Open" action="disappear"/>
        </expectedWindow>
        <pause value="30"/>
    </step>

    <!-- In this step, we acquire the application window and send File->Print menu bar, menu item commands and the expectation is the windows Print dialog-->
    <step>
        <acquiredWindow>
            <window caption=".*Notepad">
                <virtualInput>
                    <menuBar>
                        <selection>
                            <name>File</name>
                        </selection>
                        <selection>
                            <name>Print...</name>
                        </selection>
                    </menuBar>
                </virtualInput>
            </window>
        </acquiredWindow>
        <expectedWindow>
            <window caption="Print">
        </window>
        </expectedWindow>
    </step>

    <!-- In this step, we acquire the Print dialog and click on the 'Preferences' button and the expected window in this case is the dialog with the caption '"Printing Preferences' -->
    <step>
        <acquiredWindow>
            <window caption="Print">
                <windowList>
                    <window caption="General">
                        <windowList>
                            <window className="Button" caption="Preferences" action="press"/>
                        </windowList>
                    </window>
                </windowList>
            </window>
        </acquiredWindow>
        <expectedWindow>
            <window caption="Printing Preferences"/>
        </expectedWindow>
    </step>

    <!-- In this step, we acquire the dialog "Printing Preferences' and select the combo box which is the 10th child of window with caption '"Adobe PDF Settings' and select the first index. (Note: All indeces start with 0.) Besides this we uncheck the box which  has the caption '"View Adobe PDF results' and we click on the button OK. The expectation is that 'Printing Preferences' dialog disappears. -->
    <step>
        <acquiredWindow>
            <window caption="Printing Preferences">
                <windowList>
                    <window caption="Adobe PDF Settings">
                        <windowList>
                            <window className="Button" caption="View Adobe PDF results" action="uncheck"/>
                        </windowList>
                        <windowList>
                            <window className="Button" caption="Ask to Replace existing PDF file" action="uncheck"/>
                        </windowList>
                    </window>
                </windowList>
                <windowList>
                    <window className="Button" caption="OK" action="press"/>
                </windowList>
            </window>
        </acquiredWindow>
        <expectedWindow>
            <window caption="Printing Preferences" action="disappear"/>
        </expectedWindow>
    </step>

    <!-- In this step, we acquire the 'Print' dialog and click on the Print button. The expectation is that the dialog with caption 'Print' disappears. In this case we use the regular expression '^Print$' for specifying the caption given there could be multiple dialogs with caption that includes the word Print. -->
    <step>
        <acquiredWindow>
            <window caption="Print">
                <windowList>
                    <window caption="General"/>
                    <window className="Button" caption="^Print$" action="press"/>
                </windowList>
            </window>
        </acquiredWindow>
        <expectedWindow>
            <window caption="Print" action="disappear"/>
        </expectedWindow>
    </step>
    <step>
        <expectedWindow>
            <window caption="Save PDF File As"/>
        </expectedWindow>
    </step>
    <!-- Finally in this step, we acquire the dialog with caption "Save PDF File As" and in the Edit widget type the destination path for the output PDF file and click on the Save button. The expectation is that the dialog disappears-->
    <step>
        <acquiredWindow>
            <window caption="Save PDF File As">
                <windowList>
                    <window className="Edit" action="inputDestinationPath"/>
                </windowList>
                <windowList>
                    <window className="Button" caption="Save" action="press"/>
                </windowList>
            </window>
        </acquiredWindow>
        <expectedWindow>
            <window caption="Save PDF File As" action="disappear"/>
        </expectedWindow>
    </step>

    <!-- We can always set a retry count or a maximum time for a step. In case we surpass these limitations, PDF Generator generates this abort message and terminates processing. -->
    <abortMessage msg="15078"/>
</application>

在此页面上