非インタラクティブPDFドキュメントのアセンブリ

インタラクティブPDFフォームを入力として使用する場合は、非インタラクティブPDFドキュメントをアセンブリできます。 つまり、ユーザーがフィールドにデータを入力するために使用できるフォームがあるとします。 このフォームをAssemblerサービスに渡すと、AssemblerサービスからPDFドキュメントが返され、ユーザーはフィールドにデータを入力できなくなります。 このドキュメントは非インタラクティブPDFフォームです。 例えば、次の図に、インタラクティブフォームを表す住宅ローン申込書を示します。

この説明の目的で、次のDDXドキュメントが使用されているとします。

 <?xml version="1.0" encoding="UTF-8"?>
 <DDX xmlns="https://ns.adobe.com/DDX/1.0/">
      <PDF result="out.pdf">
        <PDF source="inDoc"/>
        <NoXFA/>
      </PDF>
 </DDX>

このDDXドキュメント内で、source属性にinDocという値が割り当てられています。 1つの入力PDFドキュメントのみがAssemblerサービスに渡され、1つのPDFドキュメントが返される場合に、invokeOneDocument操作を呼び出すには、値inDocをPDFソース属性に割り当てます。 invokeOneDocument操作を呼び出すとき、inDoc値は、DDXドキュメントで指定する必要がある事前定義済みのキーです。

これに対し、2つ以上の入力PDFドキュメントをAssemblerサービスに渡す場合は、invokeDDX操作を呼び出すことができます。 この場合、入力PDFドキュメントのファイル名をsource属性に割り当てます。

このDDXドキュメントにはNoXFA要素が含まれています。この要素は、非インタラクティブPDFドキュメントを返すようAssemblerサービスに指示します。

Assemblerサービスは、入力PDFドキュメントがAcrobatフォームまたは静的XFAフォームを基にしている場合、OutputサービスがAEM formsインストールに含まれていなくても、非インタラクティブPDFドキュメントをアセンブルできます。 ただし、入力PDFドキュメントがダイナミックXFAフォームの場合は、OutputサービスがAEM formsのインストールに含まれている必要があります。 動的XFAフォームのアセンブリ時に、OutputサービスがAEM formsインストールの一部でない場合は、例外が発生します。 「ドキュメント出力ストリームの作成」を参照してください。

メモ

この節を読む前に、Assemblerサービスを使用したPDFドキュメントのアセンブリについて理解しておくことをお勧めします。 ここでは、入力ドキュメントを含むコレクションオブジェクトの作成や、返されるコレクションオブジェクトから結果を抽出する方法の学習など、概念については説明しません。 (「PDFドキュメントのプログラムによるアセンブリ」を参照)。

メモ

Assemblerサービスについて詳しくは、『AEM Formsのサービスリファレンス』を参照してください。

メモ

DDXドキュメントについて詳しくは、「Assembler Service and DDX Reference」を参照してください。

手順の概要

非インタラクティブPDFドキュメントをアセンブリするには、次のタスクを実行します。

  1. プロジェクトファイルを含めます。
  2. PDFアセンブラクライアントを作成します。
  3. 既存のDDXドキュメントの参照。
  4. インタラクティブPDFドキュメントの参照
  5. 実行時オプションを設定します。
  6. PDFドキュメントをアセンブリします。
  7. 非インタラクティブPDFドキュメントを保存します。

プロジェクトファイルを含める

必要なファイルを開発プロジェクトに含めます。 Javaを使用してクライアントアプリケーションを作成する場合は、必要なJARファイルを含めます。 Webサービスを使用している場合は、プロキシファイルを必ず含めてください。

次のJARファイルをプロジェクトのクラスパスに追加する必要があります。

  • adobe-livecycle-client.jar
  • adobe-usermanager-client.jar
  • adobe-assembler-client.jar
  • adobe-utilities.jar(AEM FormsがJBossにデプロイされている場合に必要)
  • jbossall-client.jar(AEM FormsがJBossにデプロイされている場合に必要)

AEM FormsがJBoss以外のサポート対象のJ2EEアプリケーションサーバーにデプロイされている場合は、adobe-utilities.jarファイルとjbossall-client.jarファイルを、AEM FormsがデプロイされているJ2EEアプリケーションサーバーに固有のJARファイルに置き換える必要があります。

Assemblerクライアントの作成

プログラムによってAssembler操作を実行する前に、Assemblerサービスクライアントを作成する必要があります。

既存のDDXドキュメントの参照

PDFドキュメントをアセンブリするには、DDXドキュメントを参照する必要があります。 このDDXドキュメントにはNoXFA要素を含める必要があります。この要素は、非インタラクティブPDFドキュメントを返すようAssemblerサービスに指示します。

インタラクティブPDFドキュメントの参照

非インタラクティブPDFドキュメントを戻すには、インタラクティブPDFドキュメントを参照し、Assemblerサービスに渡す必要があります。

実行時オプションの設定

ジョブの実行中にAssemblerサービスの動作を制御する実行時オプションを設定できます。 例えば、エラーが発生した場合にジョブの処理を続行するようAssemblerサービスに指示するオプションを設定できます。

PDFドキュメントのアセンブリ

Assemblerサービスクライアントの作成、DDXドキュメントの参照、インタラクティブPDFドキュメントの参照、および実行時オプションの設定が完了したら、invokeOneDocument操作を呼び出すことができます。 Assemblerサービスに渡される入力PDFドキュメントは1つだけで、1つのドキュメントが返されるので、invokeDDX操作とは異なり、invokeOneDocument操作を使用できます。

非インタラクティブPDFドキュメントの保存

Assemblerサービスに渡されるPDFドキュメントが1つだけの場合、Assemblerサービスは、コレクションオブジェクトではなく1つのドキュメントを返します。 つまり、invokeOneDocument操作を呼び出すと、1つのドキュメントが返されます。 この節で参照するDDXドキュメントには非インタラクティブPDFドキュメントの作成手順が含まれているので、Assemblerサービスは、PDFファイルとして保存できる非インタラクティブPDFドキュメントを返します。

関連トピック

AEM Forms Java ライブラリファイルを含める

接続プロパティの設定

プログラムによるPDFドキュメントのアセンブリ

Java APIを使用して非インタラクティブPDFドキュメントをアセンブリする

Assembler Service API(Java)を使用して、非インタラクティブPDFドキュメントをアセンブリします。

  1. プロジェクトファイルを含めます。

    Javaプロジェクトのクラスパスに、adobe-assembler-client.jarなどのクライアントJARファイルを含めます。

  2. Assemblerクライアントを作成します。

    • 接続プロパティを含む ServiceClientFactory オブジェクトを作成します。
    • コンストラクターを使用し、AssemblerServiceClientオブジェクトを渡して、ServiceClientFactoryオブジェクトを作成します。
  3. 既存のDDXドキュメントの参照。

    • コンストラクターを使用し、DDXファイルの場所を指定する文字列値を渡して、DDXドキュメントを表すjava.io.FileInputStreamオブジェクトを作成します。
    • コンストラクタを使用して com.adobe.idp.Document オブジェクトを渡すことによって、java.io.FileInputStream オブジェクトを作成します。
  4. インタラクティブPDFドキュメントの参照

    • コンストラクターを使用し、インタラクティブPDFドキュメントの場所を渡して、java.io.FileInputStreamオブジェクトを作成します。
    • com.adobe.idp.Documentオブジェクトを作成し、PDFドキュメントを含むjava.io.FileInputStreamオブジェクトを渡します。 このcom.adobe.idp.DocumentオブジェクトはinvokeOneDocumentメソッドに渡されます。
  5. 実行時オプションを設定します。

    • コンストラクターを使用して、実行時オプションを格納するAssemblerOptionSpecオブジェクトを作成します。
    • AssemblerOptionSpecオブジェクトに属するメソッドを呼び出して、ビジネス要件に合うように実行時オプションを設定します。 例えば、エラーが発生した場合にジョブの処理を続行するようにAssemblerサービスに指示するには、AssemblerOptionSpecオブジェクトのsetFailOnErrorメソッドを呼び出し、falseを渡します。
  6. PDFドキュメントをアセンブリします。

    AssemblerServiceClientオブジェクトのinvokeOneDocumentメソッドを呼び出し、次の値を渡します。

    • DDXドキュメントを表すcom.adobe.idp.Documentオブジェクトです。 このDDXドキュメントにPDFソース要素の値inDocが含まれていることを確認してください。
    • インタラクティブPDFドキュメントを含むcom.adobe.idp.Documentオブジェクトです。
    • デフォルトのフォントとジョブログレベルを含む、実行時のオプションを指定するcom.adobe.livecycle.assembler.client.AssemblerOptionSpecオブジェクト。

    invokeOneDocumentメソッドは、非インタラクティブPDFドキュメントを含むcom.adobe.idp.Documentオブジェクトを返します。

  7. 非インタラクティブPDFドキュメントを保存します。

    • java.io.Fileオブジェクトを作成し、ファイル名の拡張子が.pdfであることを確認します。
    • DocumentオブジェクトのcopyToFileメソッドを呼び出して、Documentオブジェクトの内容をファイルにコピーします。 invokeOneDocumentメソッドが返したDocumentオブジェクトを使用していることを確認してください。
  • 「クイック開始(SOAPモード):Java APIを使用した非インタラクティブPDFドキュメントのアセンブリ»

WebサービスAPIを使用して非インタラクティブPDFドキュメントをアセンブリする

Assembler Service API(Webサービス)を使用して非インタラクティブPDFドキュメントをアセンブリします。

  1. プロジェクトファイルを含めます。

    MTOMを使用するMicrosoft .NETプロジェクトを作成します。 次のWSDL定義を使用していることを確認します。http://localhost:8080/soap/services/AssemblerService?WSDL&lc_version=9.0.1.

    メモ

    localhostを、AEM FormsをホストするサーバーのIPアドレスに置き換えます。

  2. Assemblerクライアントを作成します。

    • AssemblerServiceClientオブジェクトを作成するには、そのデフォルトのコンストラクタを使用します。

    • System.ServiceModel.EndpointAddressコンストラクターを使用してAssemblerServiceClient.Endpoint.Addressオブジェクトを作成します。 WSDLをAEM Formsサービスに指定するstring値を渡します(例:http://localhost:8080/soap/services/AssemblerService?blob=mtom)。 lc_version属性を使用する必要はありません。 この属性は、サービス参照を作成する際に使用されます。

    • AssemblerServiceClient.Endpoint.Bindingフィールドの値を取得してSystem.ServiceModel.BasicHttpBindingオブジェクトを作成します。 戻り値を BasicHttpBinding にキャストします。

    • System.ServiceModel.BasicHttpBindingオブジェクトのMessageEncodingフィールドをWSMessageEncoding.Mtomに設定します。 この値により、MTOMが使用されます。

    • 次のタスクを実行して、基本的なHTTP認証を有効にします。

      • AEM formsユーザー名をフィールドAssemblerServiceClient.ClientCredentials.UserName.UserNameに割り当てます。
      • 対応するパスワード値をフィールドAssemblerServiceClient.ClientCredentials.UserName.Passwordに割り当てます。
      • 定数値HttpClientCredentialType.BasicをフィールドBasicHttpBindingSecurity.Transport.ClientCredentialTypeに割り当てます。
      • 定数値BasicHttpSecurityMode.TransportCredentialOnlyをフィールドBasicHttpBindingSecurity.Security.Modeに割り当てます。
  3. 既存のDDXドキュメントの参照。

    • コンストラクタを使用して BLOB オブジェクトを作成します。BLOBオブジェクトは、DDXドキュメントの保存に使用されます。
    • コンストラクターを呼び出し、DDXドキュメントのファイルの場所と、ファイルを開くモードを表すstring値を渡して、System.IO.FileStreamオブジェクトを作成します。
    • System.IO.FileStreamオブジェクトの内容を格納するバイト配列を作成します。 System.IO.FileStreamオブジェクトのLengthプロパティを取得して、バイト配列のサイズを決定できます。
    • System.IO.FileStreamオブジェクトのReadメソッドを呼び出して、バイト配列にストリームデータを入力します。 読み取るバイト配列、開始位置、ストリーム長を渡します。
    • BLOBオブジェクトに、MTOMフィールドにバイト配列の内容を割り当てて入力します。
  4. インタラクティブPDFドキュメントの参照

    • コンストラクタを使用して BLOB オブジェクトを作成します。BLOBオブジェクトは、入力PDFドキュメントの保存に使用されます。 このBLOBオブジェクトは、invokeOneDocumentに引数として渡されます。
    • コンストラクターを呼び出し、入力PDFドキュメントーのファイルの場所と、ファイルを開くモードを表すstring値を渡して、System.IO.FileStreamオブジェクトを作成します。
    • System.IO.FileStreamオブジェクトの内容を格納するバイト配列を作成します。 System.IO.FileStreamオブジェクトのLengthプロパティを取得して、バイト配列のサイズを決定できます。
    • System.IO.FileStreamオブジェクトのReadメソッドを呼び出して、バイト配列にストリームデータを入力します。 読み取るバイト配列、開始位置、ストリーム長を渡します。
    • BLOBオブジェクトに、MTOMフィールドにバイト配列の内容を割り当てて入力します。
  5. 実行時オプションを設定します。

    • コンストラクターを使用して、実行時オプションを格納するAssemblerOptionSpecオブジェクトを作成します。
    • AssemblerOptionSpecオブジェクトに属するデータメンバに値を割り当てて、ビジネス要件に合うように実行時オプションを設定します。 例えば、エラーが発生した場合にジョブの処理を続行するようにAssemblerサービスに指示するには、falseAssemblerOptionSpecオブジェクトのfailOnErrorデータメンバーに割り当てます。
  6. PDFドキュメントをアセンブリします。

    AssemblerServiceClientオブジェクトのinvokeOneDocumentメソッドを呼び出し、次の値を渡します。

    • DDXドキュメントを表すBLOBオブジェクト
    • インタラクティブPDFドキュメントを表すBLOBオブジェクト
    • 実行時オプションを指定するAssemblerOptionSpecオブジェクト

    invokeOneDocumentメソッドは、非インタラクティブPDFドキュメントを含むBLOBオブジェクトを返します。

  7. 非インタラクティブPDFドキュメントを保存します。

    • コンストラクターを呼び出し、非インタラクティブPDFドキュメントーのファイルの場所とファイルを開くモードを表すstring値を渡して、System.IO.FileStreamオブジェクトを作成します。
    • invokeOneDocumentメソッドが返したBLOBオブジェクトの内容を格納するバイト配列を作成します。 BLOBオブジェクトのMTOMフィールドの値を取得して、バイト配列を入力します。
    • コンストラクターを呼び出してSystem.IO.FileStreamオブジェクトを渡し、System.IO.BinaryWriterオブジェクトを作成します。
    • System.IO.BinaryWriterオブジェクトのWriteメソッドを呼び出し、バイト配列を渡すことで、バイト配列の内容をPDFファイルに書き込みます。
  • 「クイック開始(MTOM):WebサービスAPIを使用した非インタラクティブPDFドキュメントのアセンブリ」を参照してください。

関連トピック

MTOMを使用したAEM Formsの呼び出し

このページ