Generate PDF サービスについて
GeneratePDFサービスは、ネイティブファイル形式をPDFに変換します。 また、PDF を他のファイル形式に変換し、PDF ドキュメントのサイズを最適化します。
GeneratePDFサービスは、ネイティブアプリケーションを使用して、次のファイル形式を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 に変換する場合に必要です。
DWF、DWG、DXW を変換する Autodesk AutoCAD 2005、2006、2007、2008、2009(英語のみ)
WPD、QPW、SHW を変換する Corel WordPerfect 12 および X4(英語のみ)
ODT、ODS、ODP、ODG、ODF、SXW、SXI、SXC、SXD、DOC、DOCX、RTF、TXT、XLS、XLSX、PPT、PPTX、VSD、MPP、MPPX および PUB を変換する OpenOffice 2.0、2.4、3.0.1、および 3.1
Generate PDF サービスは、64 ビットバージョンの OpenOffice をサポートしていません。
PSD を変換する Adobe Photoshop® CS2(Windows のみ)
Windows Server 2003 または Windows Server 2008 がサポートされていないので、Photoshop CS3 および CS4 はサポートされていません。
FM を変換する Adobe FrameMaker® 7.2 および 8(Windows のみ)
PMD、PM6、P65、PM を変換する Adobe PageMaker® 7.0(Windows のみ)
サードパーティアプリケーションでサポートされるネイティブ形式(アプリケーション固有のセットアップファイルの開発が必要)(Windows のみ)
GeneratePDFサービスは、次の標準ベースのファイル形式をPDFに変換します。
GeneratePDFサービスは、PDFを次のファイル形式に変換します(Windows のみ)。
GeneratePDFサービスでは、次の管理タスクを実行する必要があります。
これらのタスクに関する説明は『自動オプションの JBoss を使用した AEM Forms のインストールとデプロイ』に記載されています。
Generate PDF サービスを使用して、次のタスクを実行できます。
Generate PDF サービスについて詳しくは、AEM Forms のサービスリファレンスを参照してください。
このセクションでは Generate PDF API を使用して、Microsoft Word ドキュメントをプログラムで PDF ドキュメントに変換する方法について説明します。
その他のファイル形式について詳しくは、追加のネイティブファイル形式のサポートの追加を参照してください。
AEM Forms サービスについて詳しくは、AEM Forms サービスリファレンスを参照してください。
Microsoft Word ドキュメントを PDF ドキュメントに変換するには、次のタスクを実行します。
プロジェクトファイルを含める
必要なファイルを開発プロジェクトに含めます。Java を使用してクライアントアプリケーションを作成する場合は、必要な JAR ファイルを含めます。Web サービスを使用している場合は、プロキシファイルを必ず含めてください。
PDF 生成クライアントの作成
プログラムによって「PDF を生成」操作を実行する前に、PDF 生成サービスクライアントを作成します。Java API を使用している場合は、GeneratePdfServiceClient
オブジェクトを作成します。Web サービス API を使用している場合は、GeneratePDFServiceService
オブジェクトを作成します。
PDF ドキュメントに変換するファイルを取得する
PDF ドキュメントに変換する Microsoft Word ドキュメントを取得します。
ファイルを PDF ドキュメントに変換
PDF 生成サービスクライアントを作成した後、createPDF2
メソッドを呼び出します。このメソッドでは、変換するドキュメントに関する情報(ファイル拡張子を含む)が必要です。
結果の取得
ファイルを PDF ドキュメントに変換した後、結果を取得できます。例えば、Word ファイルを PDF ドキュメントに変換した後に、その PDF ドキュメントを取得して保存できます。
関連トピック
Java API を使用して Word ドキュメントを PDF ドキュメントに変換
Web サービス API を使用して Word ドキュメントを PDF ドキュメントに変換
Generate PDF サービス API クイックスタート
Generate PDF API(Java)を使用して、Microsoft Word ドキュメントを PDF ドキュメントに変換します。
プロジェクトファイルを含めます。
adobe-generatepdf-client.jar などのクライアント JAR ファイルを Java プロジェクトのクラスパスに含めます。
PDF 生成クライアントを作成します。
ServiceClientFactory
オブジェクトを作成します。ServiceClientFactory
オブジェクトを渡すことによって、GeneratePdfServiceClient
オブジェクトを作成します。PDF ドキュメントに変換するファイルを取得します。
java.io.FileInputStream
オブジェクトを作成します。ファイルの場所を指定する文字列値を渡します。java.io.FileInputStream
オブジェクトを渡すことによって、com.adobe.idp.Document
オブジェクトを作成します。ファイルを PDF ドキュメントに変換します。
GeneratePdfServiceClient
オブジェクトの createPDF2
メソッドを呼び出して次の値を渡すことによって、ファイルを PDF ドキュメントに変換します。
com.adobe.idp.Document
オブジェクト。java.lang.String
オブジェクト。java.lang.String
オブジェクト。ファイルタイプ設定は、.doc や .xls など、様々なファイルタイプの変換設定を提供します。java.lang.String
オブジェクト。例えば、Standard
を指定できます。java.lang.String
オブジェクト。com.adobe.idp.Document
オブジェクト。com.adobe.idp.Document
オブジェクト。createPDF2
メソッドは、新しい PDF ドキュメントとログ情報を含む CreatePDFResult
オブジェクトを返します。通常、ログファイルには、変換リクエストによって生成されるエラーまたは警告メッセージが含まれます。
結果を取得します。
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 ドキュメントに変換
Generate PDF API(web サービス)を使用して、Microsoft Word ドキュメントを PDF ドキュメントに変換します。
プロジェクトファイルを含めます。
MTOM を使用する Microsoft .NET プロジェクトを作成します。WSDL 定義 http://localhost:8080/soap/services/GeneratePDFService?WSDL&lc_version=9.0.1
を使用するようにします。
localhost
を AEM Forms をホスティングするサーバーの IP アドレスに置換します。
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 基本認証を有効にします。
GeneratePDFServiceClient.ClientCredentials.UserName.UserName
フィールドに AEM Forms ユーザー名を割り当てます。GeneratePDFServiceClient.ClientCredentials.UserName.Password
フィールドに割り当てます。HttpClientCredentialType.Basic
をBasicHttpBindingSecurity.Transport.ClientCredentialType
フィールドに割り当てます。BasicHttpBindingSecurity.Security.Mode
に定数値 BasicHttpSecurityMode.TransportCredentialOnly
を割り当てます。PDF ドキュメントに変換するファイルを取得します。
BLOB
オブジェクトを作成します。BLOB
オブジェクトは、PDF ドキュメントに変換するファイルを格納するために使用されます。System.IO.FileStream
オブジェクトを作成します。変換するファイルの場所を表す文字列値とファイルを開くモードを渡します。System.IO.FileStream
オブジェクトのコンテンツを格納するバイト配列を作成します。System.IO.FileStream
オブジェクトの Length
プロパティを取得することで、バイト配列のサイズを決定できます。System.IO.FileStream
オブジェクトの Read
メソッドを呼び出して読み込み対象のバイト配列、開始位置、ストリーム長を渡すことによって、バイト配列にストリームデータを入力します。MTOM
プロパティにバイト配列の内容を割り当て、BLOB
オブジェクトにデータを入力します。ファイルを PDF ドキュメントに変換します。
GeneratePDFServiceService
オブジェクトの CreatePDF2
メソッドを呼び出して次の値を渡し、ファイルを PDF ドキュメントに変換します。
BLOB
オブジェクト。java.lang.String
オブジェクト。ファイルタイプ設定は、.doc や .xls など、様々なファイルタイプの変換設定を提供します。Standard
を指定できます。No Security
を指定できます。BLOB
オブジェクト。BLOB
オブジェクト。CreatePDF2
メソッドによって入力されるタイプ BLOB
の出力パラメーター。CreatePDF2
メソッドは、変換されたドキュメントをこのオブジェクトに入力します。(このパラメーター値は、web サービスの呼び出しにのみ必要です)。CreatePDF2
メソッドによって入力される BLOB
型の出力パラメーター。CreatePDF2
メソッドは、このオブジェクトにログドキュメントを入力します。(このパラメーター値は、web サービスの呼び出しにのみ必要です)。結果を取得します。
BLOB
オブジェクトの MTOM
フィールドをバイト配列に変換します。バイト配列は変換後の PDF ドキュメントを表します。createPDF2
メソッドの出力パラメーターとして使用される BLOB
オブジェクトを使用していることを確認してください。System.IO.FileStream
オブジェクトを作成します。System.IO.FileStream
オブジェクトを渡すことによって、System.IO.BinaryWriter
オブジェクトを作成します。System.IO.BinaryWriter
オブジェクトの Write
メソッドを呼び出して、バイト配列を渡すことによって、バイト配列の内容を PDF ファイルに書き込みます。関連トピック:
このセクションでは、PDF 生成 API を使用して、プログラムで HTML ドキュメントを PDF ドキュメントに変換する方法について説明します。
PDF 生成サービスについて詳しくは、AEM Forms サービスリファレンスを参照してください。
HTML ドキュメントを PDF ドキュメントに変換するには、次のタスクを実行します。
プロジェクトファイルを含める
必要なファイルを開発プロジェクトに含めます。Java を使用してクライアントアプリケーションを作成する場合は、必要な JAR ファイルを含めます。Web サービスを使用している場合は、プロキシファイルを必ず含めてください。
PDF 生成クライアントの作成
プログラムによって「PDF を生成」操作を実行する前に、PDF 生成サービスクライアントを作成する必要があります。Java API を使用している場合は、GeneratePdfServiceClient
オブジェクトを作成します。Web サービス API を使用している場合は、GeneratePDFServiceService
を作成します。
HTML コンテンツを取得して PDF ドキュメントに変換する
PDF ドキュメントに変換する HTML コンテンツを参照します。HTMLコンテンツ(HTML ファイルや、URL を使用してアクセス可能な HTML コンテンツなど)を参照できます。
HTML コンテンツを PDF ドキュメントに変換
サービスクライアントを作成した後、適切な PDF 作成操作を呼び出すことができます。この操作では、ターゲットドキュメントへのパスを含む、変換するドキュメントに関する情報が必要です。
結果の取得
HTML コンテンツを PDF ドキュメントに変換した後、結果を取得して PDF ドキュメントを保存できます。
関連トピック
Java API を使用して HTML コンテンツを PDF ドキュメントに変換する
Web サービス API を使用して HTML コンテンツを PDF ドキュメントに変換する
Generate PDF サービス API クイックスタート
Generate PDF API(Java)を使用して HTML ドキュメントを PDF ドキュメントに変換します。
プロジェクトファイルを含めます。
adobe-generatepdf-client.jar などのクライアント JAR ファイルを Java プロジェクトのクラスパスに含めます。
PDF 生成クライアントを作成します。
コンストラクターを使用し、接続プロパティを含む ServiceClientFactory
オブジェクトを渡すことにより、GeneratePdfServiceClient
オブジェクトを作成します。
HTML コンテンツを取得して PDF ドキュメントに変換します。
文字列変数を作成し、HTML の内容を指す URL を割り当てて、HTML コンテンツを取得します。
HTML のコンテンツを PDF ドキュメントに変換します。
GeneratePdfServiceClient
オブジェクトの htmlToPDF2
メソッドを呼び出して、次の値を渡します。
java.lang.String
オブジェクト。java.lang.String
オブジェクト。ファイルタイプの設定には、スパイダリングレベルを含めることができます。java.lang.String
オブジェクト。com.adobe.idp.Document
オブジェクト。この情報が指定されていない場合、設定は前の 3 つのパラメータに基づいて自動的に選択されます。com.adobe.idp.Document
オブジェクト。結果を取得します。
htmlToPDF2
メソッドは、生成された新しい PDF ドキュメントを含む HtmlToPdfResult
オブジェクトを返します。新しく作成した PDF ドキュメントを取得するには、次のアクションを実行します。
HtmlToPdfResult
オブジェクトの getCreatedDocument
メソッドを呼び出します。これは com.adobe.idp.Document
オブジェクトを返します。com.adobe.idp.Document
オブジェクトの copyToFile
メソッドを呼び出して、前の手順で作成したオブジェクトから PDF ドキュメントを抽出します。関連トピック
クイックスタート(SOAP モード):Java API を使用して HTML コンテンツを PDF ドキュメントに変換
クイックスタート(SOAP モード):Java API を使用して HTML コンテンツを PDF ドキュメントに変換
Generate PDF API(web サービス)を使用して、HTML のコンテンツを PDF ドキュメントに変換します。
プロジェクトファイルを含めます。
MTOM を使用する Microsoft .NET プロジェクトを作成します。WSDL 定義 http://localhost:8080/soap/services/GeneratePDFService?WSDL&lc_version=9.0.1
を使用するようにします。
localhost
を AEM Forms をホスティングするサーバーの IP アドレスに置換します。
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 基本認証を有効にします。
GeneratePDFServiceClient.ClientCredentials.UserName.UserName
フィールドに AEM Forms ユーザー名を割り当てます。GeneratePDFServiceClient.ClientCredentials.UserName.Password
フィールドに割り当てます。HttpClientCredentialType.Basic
をBasicHttpBindingSecurity.Transport.ClientCredentialType
フィールドに割り当てます。BasicHttpSecurityMode.TransportCredentialOnly
をフィールド BasicHttpBindingSecurity.Security.Mode
に割り当てます。HTML コンテンツを取得して PDF ドキュメントに変換します。
文字列変数を作成し、HTML の内容を指す URL を割り当てて、HTML コンテンツを取得します。
HTML のコンテンツを PDF ドキュメントに変換します。
GeneratePDFServiceService
オブジェクトの HtmlToPDF2
メソッドを呼び出し、次の値を渡して HTML の内容を PDF ドキュメントに変換します。
java.lang.String
オブジェクト。BLOB
オブジェクト。BLOB
オブジェクト。CreatePDF2
メソッドによって入力されるタイプ BLOB
の出力パラメーター。CreatePDF2
メソッドは、変換されたドキュメントをこのオブジェクトに入力します。(このパラメーター値は、web サービスの呼び出しにのみ必要です)。結果を取得します。
BLOB
オブジェクトの MTOM
フィールドをバイト配列に変換します。バイト配列は変換後の PDF ドキュメントを表します。HtmlToPDF2
メソッドの出力パラメーターとして使用される BLOB
オブジェクトを使用していることを確認してください。System.IO.FileStream
オブジェクトを作成します。System.IO.FileStream
オブジェクトを渡すことによって、System.IO.BinaryWriter
オブジェクトを作成します。System.IO.BinaryWriter
オブジェクトの Write
メソッドを呼び出して、バイト配列を渡すことによって、バイト配列の内容を PDF ファイルに書き込みます。関連トピック
この節では、Generate PDF Java API と web サービス API を使用して、PDF ドキュメントをプログラムで RTF ファイルに変換する方法について説明します。RTF ファイルは、非画像形式の一例です。その他の非画像形式には、HTML、テキスト、DOC、EPS などがあります。PDF ドキュメントを RTF に変換する場合は、送信ボタンなどのフォーム要素が PDF ドキュメントに含まれていないことを確認します。フォーム要素は変換されません。
Generate PDF サービスについて詳しくは、AEM Forms のサービスリファレンスを参照してください。
PDF ドキュメントをサポートされている任意のタイプに変換するには、次の手順を実行します。
プロジェクトファイルを含める
必要なファイルを開発プロジェクトに含めます。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 ファイルに変換
Generate PDF サービス API クイックスタート
Generate PDF API(Java)を使用して、PDF ドキュメントを RTF ファイルに変換します。
プロジェクトファイルを含めます。
adobe-generatepdf-client.jar などのクライアント JAR ファイルを Java プロジェクトのクラスパスに含めます。
PDF 生成クライアントを作成します。
コンストラクターを使用し、接続プロパティを含む ServiceClientFactory
オブジェクトを渡すことにより、GeneratePdfServiceClient
オブジェクトを作成します。
変換する PDF ドキュメントを取得します。
java.io.FileInputStream
オブジェクトを作成します。PDF ドキュメントの場所を指定する文字列値を渡します。java.io.FileInputStream
オブジェクトを渡すことによって、com.adobe.idp.Document
オブジェクトを作成します。PDF ドキュメントを変換します。
GeneratePdfServiceClient
オブジェクトの exportPDF2
メソッドを呼び出して、次の値を渡します。
com.adobe.idp.Document
オブジェクト。java.lang.String
オブジェクト。java.lang.String
オブジェクト。ConvertPDFFormatType
オブジェクト。com.adobe.idp.Document
オブジェクト。exportPDF2
メソッドは、変換されたファイルを含む ExportPDFResult
オブジェクトを返します。
PDF ドキュメントを変換します。
新しく作成されたファイルを取得するには、次のアクションを実行します。
ExportPDFResult
オブジェクトの getConvertedDocument
メソッドを呼び出します。これは com.adobe.idp.Document
オブジェクトを返します。com.adobe.idp.Document
オブジェクトの copyToFile
メソッドを呼び出して、新規ドキュメントを抽出します。関連トピック
クイックスタート(SOAP モード):Java API を使用して HTML コンテンツを PDF ドキュメントに変換
Generate PDF API(web サービス)を使用して、PDF ドキュメントを RTF ファイルに変換します。
プロジェクトファイルを含めます。
MTOM を使用する Microsoft .NET プロジェクトを作成します。WSDL 定義 http://localhost:8080/soap/services/GeneratePDFService?WSDL&lc_version=9.0.1
を使用するようにします。
localhost
を AEM Forms をホスティングするサーバーの IP アドレスに置換します。
Generate 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 基本認証を有効にします。
GeneratePDFServiceClient.ClientCredentials.UserName.UserName
フィールドに AEM Forms ユーザー名を割り当てます。GeneratePDFServiceClient.ClientCredentials.UserName.Password
フィールドに割り当てます。HttpClientCredentialType.Basic
をBasicHttpBindingSecurity.Transport.ClientCredentialType
フィールドに割り当てます。BasicHttpSecurityMode.TransportCredentialOnly
をフィールド BasicHttpBindingSecurity.Security.Mode
に割り当てます。変換する PDF ドキュメントを取得します。
BLOB
オブジェクトを作成します。BLOB
オブジェクトは、変換された PDF ドキュメントの保存に使用されます。System.IO.FileStream
オブジェクトを作成するには、コンストラクターを呼び出し、PDF ドキュメントのファイルの場所とファイルを開くモードを表す文字列値を渡します。System.IO.FileStream
オブジェクトのコンテンツを格納するバイト配列を作成します。System.IO.FileStream
オブジェクトの Length
プロパティを取得することで、バイト配列のサイズを決定できます。System.IO.FileStream
オブジェクトの Read
メソッドを呼び出して読み込み対象のバイト配列、開始位置、ストリーム長を渡すことによって、バイト配列にストリームデータを入力します。MTOM
プロパティにバイト配列の内容を割り当てて、BLOB
オブジェクトにデータを入力します。PDF ドキュメントを変換します。
GeneratePDFServiceServiceWse
オブジェクトの ExportPDF2
メソッドを呼び出して、次の値を渡します。
BLOB
オブジェクト。java.lang.String
オブジェクト。RTF
を指定します。BLOB
オブジェクト。ExportPDF2
メソッドによって入力されるタイプ BLOB
の出力パラメーター。ExportPDF2
メソッドは、変換されたドキュメントをこのオブジェクトに入力します。(このパラメーター値は、web サービスの呼び出しにのみ必要です)。変換したファイルを保存します。
BLOB
オブジェクトの MTOM
フィールドをバイト配列に割り当てます。バイト配列は変換された RTF ドキュメントを表します。ExportPDF2
メソッドの出力パラメーターとして使用される BLOB
オブジェクトを使用していることを確認してください。System.IO.FileStream
オブジェクトを作成します。RTF ファイルの場所を表す文字列値を渡します。System.IO.FileStream
オブジェクトを渡すことによって、System.IO.BinaryWriter
オブジェクトを作成します。System.IO.BinaryWriter
オブジェクトの Write
メソッドを呼び出し、バイト配列を渡します。関連トピック
この節では、追加のネイティブファイル形式のサポートを追加する方法について説明します。Generate PDF サービスと、このサービスがネイティブファイル形式を PDF に変換するために使用するネイティブアプリケーションとの間のやり取りの概要を提供します。
この節では、次の点についても説明します。
Generate PDF サービスがネイティブファイル形式を変換するには、そのファイル形式に関連付けられたアプリケーションを呼び出し、デフォルトのプリンターを使用してドキュメントを印刷するためにそのアプリケーションとやり取りします。デフォルトのプリンターを Adobe PDF プリンターとして設定する必要があります。
この図は、ネイティブアプリケーションのサポートに関連するコンポーネントとドライバーを示しています。また、インタラクションに影響を与える XML 文法についても説明します。
ネイティブファイル変換のためのコンポーネントのインタラクション
このドキュメントでは、ネイティブアプリケーションという用語を使用して、ネイティブファイル形式(Microsoft Word など)の生成に使用するアプリケーションを示します。
AppMon は、ユーザーがアプリケーションで表示されるダイアログボックス間を移動するのと同じ方法でネイティブアプリケーションとやり取りする、エンタープライズコンポーネントです。AppMon が Microsoft Word などのアプリケーションにファイルを開いて印刷するように指示する際に使用する XML 文法には、次のような連続したタスクが含まれます。
AppMon は、標準の Win32 API を使用して、サードパーティのアプリケーションとやり取りし、キーストロークやマウスクリックなどの UI イベントを転送します。これは、これらのアプリケーションを制御して PDF ファイルを生成するのに役立ちます。
これらの Win32 API の制限により、AppMon は、TextPad などの一部のアプリケーションで見つかるフローティングメニューバーや、Win32 API を使用してコンテンツを取得できない特定の種類のダイアログなど、特定の種類のウィンドウにこれらの UI イベントをディスパッチできません。
フローティングメニューバーを視覚的に識別するのは簡単です。ただし、特別な種類のダイアログは、目視による検査だけでは特定できない場合があります。ダイアログを調べて、AppMon が標準の Win32 API を使用してダイアログと対話できるかどうかを判断するには、Microsoft Spy ++(Microsoft Visual C ++ 開発環境の一部)または同等の WinID(https://www.dennisbabkin.com/php/download.php?what=WinID から無料でダウンロードできます)などのサードパーティアプリケーションが必要になります。
WinID がテキスト、サブウィンドウ、ウィンドウクラス ID などのダイアログの内容を抽出できる場合は、AppMon も同じ処理を実行できます。
次のテーブルは、ネイティブファイル形式の印刷で使用される情報の種類を示しています。
情報タイプ |
説明 |
ネイティブファイルに関連するエントリの変更/作成 |
---|---|---|
管理設定 |
PDF 設定、セキュリティ設定、およびファイルタイプ設定が含まれます。 ファイルタイプ設定は、ファイル名の拡張子を対応するネイティブアプリケーションに関連付けます。ファイルタイプ設定では、ネイティブファイルの印刷に使用するネイティブアプリケーション設定も指定します。 |
既にサポートされているネイティブアプリケーションの設定を変更するには、システム管理者が管理コンソールで「ファイルタイプ設定」を設定します。 新しいネイティブファイル形式のサポートを追加するには、ファイルを手動で編集する必要があります。(ネイティブファイル形式のサポートの追加または変更を参照。) |
スクリプト |
PDF 生成サービスとネイティブアプリケーション間の相互作用を指定します。このようなやり取りは、通常、アプリケーションに対して、Adobe PDF ドライバーにファイルを印刷するよう指示します。 スクリプトには、特定のダイアログボックスを開くようネイティブアプリケーションに指示し、それらのダイアログボックスのフィールドやボタンに対して特定の応答を提供する指示が含まれています。 |
PDF 生成サービスには、サポートされているすべてのネイティブアプリケーションのスクリプトファイルが含まれています。これらのファイルは、XML 編集アプリケーションを使用して変更できます。 新しいネイティブアプリケーションのサポートを追加するには、新しいスクリプトファイルを作成する必要があります。(ネイティブアプリケーション用の追加のダイアログ XML ファイルの作成または変更を参照。) |
汎用ダイアログボックスの説明 |
複数のアプリケーションに共通のダイアログボックスに対する応答方法を指定します。このようなダイアログボックスは、オペレーティングシステム、ヘルパーアプリケーション(PDFMaker など)、ドライバーによって生成されます。 この情報は、appmon.global.en_US.xml ファイルに含まれます。 |
このファイルは変更しないでください。 |
アプリケーション固有のダイアログボックスの説明 |
アプリケーション固有のダイアログボックスに対する応答方法を指定します。 この情報は、appmon.[appname].dialog.[locale].xml (appmon.word.en_US.xml など) |
このファイルは変更しないでください。 新しいネイティブアプリケーション用のダイアログボックスの手順を追加するには、ネイティブアプリケーション用の追加のダイアログ XML ファイルの作成または変更を参照してください。 |
その他のアプリケーション固有のダイアログボックスの手順 |
アプリケーション固有のダイアログボックスの手順に対する上書きと追加を指定します。この節では、このような情報の例を示します。 この情報は、appmon.[appname].addition.[locale].xml. (例:appmon.addition.en_US.xml) |
このタイプのファイルは、XML 編集アプリケーションを使用して作成および変更できます。(ネイティブアプリケーション用の追加のダイアログ XML ファイルの作成または変更を参照。) 重要:サーバーがサポートするネイティブアプリケーションごとに、追加のアプリケーション固有のダイアログボックスの手順を作成する必要があります。 |
スクリプト XML ファイルは、ユーザーがアプリケーションダイアログボックスをナビゲートするのと同じ方法で、PDF 生成サービスにアプリケーションダイアログボックスをナビゲートするように指示します。スクリプト XML ファイルは、ボタンの押下、チェックボックスの選択または選択解除、メニュー項目の選択などのアクションを実行することにより、ダイアログボックスに応答するように PDF 生成サービスに指示します。
これに対して、ダイアログ XML ファイルは、スクリプト XML ファイルで使用されるのと同じタイプのアクションでダイアログボックスに応答するだけです。
このセクションと次のセクションでは、説明されている視点に応じて、ダイアログボックスとそれに含まれるコンポーネントに対して異なる用語を使用します。ダイアログボックスのコンポーネントは、ボタン、フィールド、コンボボックスなどの項目です。
このセクションと次のセクションで、ユーザーの観点からダイアログボックスとそのコンポーネントについて説明する場合、ダイアログボックス、ボタン、フィールド、コンボボックスなどの用語を使用します。
このセクションと次のセクションで、ダイアログボックスとそのコンポーネントを内部表現の観点から説明する場合、ウィンドウ要素という用語を使用します。ウィンドウ要素の内部表現は階層で、各ウィンドウ要素のインスタンスはラベルで識別されます。ウィンドウ要素インスタンスは、その物理的な特性と動作も記述します。
ユーザーの視点から見ると、ダイアログボックスとそのコンポーネントは異なる動作を示し、一部のダイアログボックス要素は、アクティブ化されるまで非表示になります。内部表現の観点からは、そのような行動の問題は存在しません。例えば、ダイアログボックスの内部表現は、そのダイアログボックスに含まれるコンポーネントの内部表現に似ていますが、コンポーネントがダイアログボックス内にネストされている点が異なります。
このセクションでは、AppMon に手順を提供する XML 要素について説明します。これらの要素には、dialog
要素、window
要素などの名前があります。このドキュメントでは、XML 要素を区別するために等幅フォントを使用します。*dialog*
要素は、XML スクリプトファイルが意図的または意図せずに表示される原因となる可能性のあるダイアログボックスを識別します。*window*
要素は、ウィンドウ要素(ダイアログボックスまたはダイアログボックスのコンポーネント)を識別します。
次の図は、スクリプトとダイアログ XML の階層を示しています。スクリプト XML ファイルは、script.xsd スキーマに準拠しており、この script.xsd スキーマには、window.xsd スキーマが(XML の意味で)含まれます。同様に、ダイアログ XML ファイルは dialogs.xsd スキーマに準拠し、dialogs.xsd スキーマにも window.xsd スキーマが含まれます。
スクリプトとダイアログ XML の階層
スクリプト XML ファイルは、特定のウィンドウ要素に移動してそれらの要素への応答を提供するように指示する一連のステップをネイティブアプリケーションに指定します。ほとんどの応答は、ユーザーが対応するダイアログボックスのフィールド、コンボボックス、ボタンへの入力に対応するテキストまたはキーストロークです。
PDF 生成サービスでスクリプト XML ファイルをサポートする目的は、ネイティブアプリケーションにネイティブファイルを印刷するよう指示することです。ただし、スクリプト XML ファイルを使用して、ユーザーがネイティブアプリケーションのダイアログボックスを操作するときに実行できるすべてのタスクを実行できます。
スクリプト XML ファイル内の手順は、分岐の機会がなく、順番に実行されます。サポートされている唯一の条件付きテストは、タイムアウト/再試行です。これにより、特定の期間内および特定の回数の再試行後に手順が正常に完了しなかった場合にスクリプトが終了します。
順次的な手順に加えて、手順内の命令も順に実行されます。手順と指示が、ユーザーが同じ手順を実行する順序を反映していることを確認する必要があります。
スクリプト XML ファイルの各手順は、手順の指示を正常に実行した場合に表示されるウィンドウ要素と予想されるウィンドウ要素を識別します。スクリプトでの手順の実行中に予期しないダイアログボックスが表示された場合、PDF 生成サービスは、次のセクションで説明するようにダイアログ XML ファイルを検索します。
ネイティブアプリケーションを実行すると、異なるダイアログボックスが表示されます。これは、ネイティブアプリケーションが表示モードか非表示モードかに関係なく表示されます。ダイアログボックスは、オペレーティングシステムによって生成することも、アプリケーション自体によって生成することもできます。ネイティブアプリケーションが PDF 生成サービスの制御下で実行されている場合、システムおよびネイティブアプリケーションのダイアログボックスが非表示ウィンドウに表示されます。
ダイアログ XML ファイルは、 PDF 生成サービスのシステムまたはネイティブアプリケーションのダイアログボックスに対する応答を指定します。ダイアログ XML ファイルを使用すると、PDF 生成サービスは、変換プロセスを容易にする方法で、プロンプトのないダイアログボックスに応答できます。
システムまたはネイティブアプリケーションが、現在実行中のスクリプト XML ファイルで処理されないダイアログボックスを表示すると、PDF 生成サービスはダイアログ XML ファイルをこの順序で検索し、一致するものが見つかると停止します。
Generate PDF サービスは、ダイアログボックスに一致するものを見つけると、ダイアログボックスに指定されたキーストロークまたはその他のアクションを送信して、それを閉じます。ダイアログボックスの指示で中止メッセージが指定されている場合、Generate PDF サービスは現在実行中のジョブを終了し、エラーメッセージを生成します。このような中止メッセージは、スクリプト XML 文法の abortMessage
要素で指定されます。
Generate PDF サービスで、以前にリストされたファイルのいずれにも記述されていないダイアログボックスが検出された場合、Generate PDF サービスは、ダイアログボックスのキャプションをログファイルエントリに組み込みます。現在実行中のジョブは最終的にタイムアウトします。その後、ログファイル内の情報を使用して、ネイティブアプリケーション用の追加のダイアログ XML ファイルで新しい手順を作成できます。
この節では、他のネイティブファイル形式をサポートするために必要な作業、または既にサポートされているネイティブファイル形式のサポートを変更するために必要な作業について説明します。
サポートを追加または変更する前に、次の作業を完了する必要があります。
ダイアログおよびスクリプトの XML ファイルでは、ダイアログまたはスクリプト要素が応答するウィンドウ要素(ダイアログボックス、フィールド、またはその他のダイアログコンポーネント)を識別する必要があります。例えば、スクリプトがネイティブアプリケーションのメニューを呼び出した後、スクリプトはそのメニューでキー操作またはアクションを適用するウィンドウ要素を識別する必要があります。
ダイアログボックスは、タイトルバーに表示されるキャプションによって簡単に識別できます。ただし、下位レベルのウィンドウ要素を識別するには、Microsoft Spy++ などのツールを使用する必要があります。下位レベルのウィンドウ要素は各種の属性を使用して識別できますが、これらの属性は明確ではありません。さらに、ウィンドウ要素の識別方法はネイティブアプリケーションごとに異なる場合があります。そのため、ウィンドウ要素を識別する方法は複数あります。ウィンドウ要素の識別を考慮する場合に推奨される順序を次に示します。
ウィンドウを識別するために、これら 3 つの属性のうち 1 つ、または複数の属性の組み合わせを使用できます。
属性でキャプションを識別できない場合は、代わりに親に対するインデックスを使用してウィンドウ要素を識別できます。インデックスは、兄弟ウィンドウ要素に対するウィンドウ要素の位置を指定します。多くの場合、コンボボックスはインデックスでしか判別できません。
次のような問題があります。
Pri&nt
と表示されていますが、これはホットキーが n であることを示しています。スクリプトおよびダイアログの XML ファイルのキャプションタイトルでは、アンパサンドを省略する必要があります。^Long caption title$
)のようになります。(キャプション属性での正規表現の使用を参照。)&
、「より小さい」と「より大きい」を表す記号にはそれぞれ <
と >
、アポストロフィには '
、引用符には "
を使用します。ダイアログまたはスクリプト XML ファイルで作業する場合は、Microsoft Spy++ アプリケーションをインストールする必要があります。
ダイアログファイルとスクリプトファイルは、appmondata.jar ファイルにあります。これらのファイルを変更したり、新しいスクリプトファイルやダイアログファイルを追加したりする前に、この JAR ファイルを解凍する必要があります。例えば、EditPlus アプリケーションのサポートを追加するとします。appmon.editplus.script.en_US.xml と appmon.editplus.script.add.en_US.xml という名前の 2 つの XML ファイルを作成します。これらの XML スクリプトは、以下に指定するように、2 つの場所で adobe-appmondata.jar ファイルに追加する必要があります。
これらの XML ファイルを adobe-appmondata.jar ファイルに追加した後、GeneratePDF コンポーネントを再デプロイする必要があります。adobe-appmondata.jar ファイルにダイアログおよびスクリプト XML ファイルを追加するには、次のタスクを実行します。
PDF 生成コンポーネントを再デプロイするには
新しいネイティブアプリケーションにファイルをダイレクトする場合は、そのアプリケーション用のスクリプト XML ファイルを作成する必要があります。PDF 生成サービスと既にサポートされているネイティブアプリケーションとのやり取りを変更する場合は、そのアプリケーションのスクリプトを変更する必要があります。
スクリプトには、ネイティブアプリケーションのウィンドウ要素間を移動し、それらの要素に対して特定の応答を提供する手順が含まれています。この情報は、appmon.[appname].script.[ロケール].xml. 例えば appmon.notepad.script.en_US.xml です。
ネイティブアプリケーションを使用して、ドキュメントを印刷するために移動する必要のあるウィンドウ要素と実行する必要がある各応答を決定します。任意の応答によって生成されるダイアログボックスに注意してください。手順は次の手順に似ています。
Microsoft Spy++ を使用して、ネイティブアプリケーションのウィンドウ要素プロパティの ID を取得します。スクリプトを記述するには、次の ID が必要です。
キャプションの仕様では、正規表現を使用できます。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>
window
および windowList
要素は次の順序にする必要があります。
window
要素が windowList
または dialog
要素の子として表示される場合、それらの window
要素を降順で並べ替えます。caption
名の長さは順序での位置を示します。windowList
要素が window
要素に表示される場合は、それらの 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'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 ファイルも作成する必要があります。AppMon が使用する各ネイティブアプリケーションには、1 つの追加のダイアログ XML ファイルのみを含める必要があります。未承諾のダイアログボックスが見つからない場合でも、追加のダイアログ XML ファイルが必要です。追加のダイアログボックスには、その window
要素が単なるプレースホルダーである場合でも、少なくとも 1 つの window
要素を含める必要があります。
この文脈では、「追加」とは、アプリモンの内容を意味します。[applicationname].addition.[ロケール].xml ファイル。 このようなファイルは、ダイアログ XML ファイルの上書きと追加を指定します。
また、以下の目的のために、ネイティブアプリケーション用の追加のダイアログ XML ファイルを変更することもできます。
追加の dialogXML ファイルを識別するファイル名は appmon です。[appname].addition.[ロケール].xml. (例:appmon.excel.addition.en_US.xml)
追加のダイアログ XML ファイルの名前は、appmon という形式を使用する必要があります。[applicationname].addition.[ロケール].xml,ここで applicationname は、XML 設定ファイルおよびスクリプトで使用されるアプリケーション名と完全に一致する必要があります。
native2pdfconfig.xml 設定ファイルで指定された一般のアプリケーションには、プライマリダイアログ XML ファイルが含まれていません。この仕様については、 ネイティブファイル形式に対するサポートの追加または変更のセクションで説明します。
window
要素で子として表示される windowList
要素に順序を付ける必要があります。(window 要素と windowList 要素の順序を参照してください。)
システムで生成されるダイアログボックスに応答したり、複数のアプリケーションに共通するダイアログボックスに応答したりするように、汎用ダイアログ XML ファイルを変更できます。
この手順では、Generate PDF サービスの設定ファイルを更新して、ファイル形式をネイティブアプリケーションに関連付ける方法を説明します。この設定ファイルを更新するには、管理コンソールを使用して設定データをファイルに書き出す必要があります。設定データのデフォルトのファイル名は native2pdfconfig.xml です。
Generate PDF サービスの設定ファイルの更新
filetype-settings
要素を変更します。アプリケーションの名前は、GenericApp
要素の name
属性の値として指定されます。この値は、そのアプリケーション用に開発するスクリプトで指定された、対応する名前と完全に一致する必要があります。同様に、GenericApp
要素の displayName
属性は、対応するスクリプトの expectedWindow
ウィンドウのキャプションと完全に一致する必要があります。このような等価性は、displayName
または caption
属性に表示される正規表現を解決した後に評価されます。
この例では、Generate PDF サービスで提供されるデフォルトの設定データを変更し、ファイル名拡張子が.txt のファイルを処理するために(Microsoft Word ではなく)メモ帳を使用するように指定しました。この変更を行う前は、このようなファイルを処理するネイティブアプリケーションとして 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
のような環境変数になります。
新しい環境変数を作成した後、Generate PDF サービスがデプロイされているサーバーを再起動する必要があります。
Windows XP 環境でのシステム変数の作成
c:\windows\Notepad.exe
コマンドラインからのシステム変数の作成
コマンドラインウィンドウで、次の形式を使用して変数定義を入力します。
[applicationname]_PATH=[Full path name]
入力例 : NotePad_PATH=C:\WINDOWS\NOTEPAD.EXE
新しいコマンドラインプロンプトを起動して、システム変数を有効にします。
AEM Forms には、Generate PDFサービスでメモ帳を使用してファイル名拡張子が.txt のファイルを処理するためのサンプル XML が含まれています。このコードはこのセクションに組み込まれています。さらに、この節で説明している、他の変更も加える必要があります。
以下は、メモ帳アプリケーションで追加するダイアログボックスの例を示します。これらのダイアログボックスは、Generate 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>
次の例では、Generate 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>