ベイツ番号を使用したドキュメントのアセンブリ

このドキュメントのサンプルと例は、JEE上のAEM Forms環境に限られています。

ベイツナンバリングを使用して、一意のページ識別子を含むPDFドキュメントをアセンブリできます。 ベイツ 番号付けは、関連するドキュメントのバッチに一意のIDを適用する方法です。ドキュメント内の各ページ(またはドキュメントのセット)に、ページを一意に識別するベイツナンバーが割り当てられます。 例えば、原材料情報を含む、1 つの組立部品の製造に関する生産ドキュメントに、1 つの識別子が割り当てられます。ベイツナンバリングの数値は連続した増分値で、オプションでプレフィックスやサフィックスが付きます。プレフィックス+数値+サフィックスは、ベイツパターン​と呼ばれます。

次の例は、ドキュメントのヘッダに一意の識別子を含む PDF ドキュメントを示しています。

au_au_batesnumber

このディスカッションでは、一意のページ識別子をドキュメントのヘッダーに配置します。 次のDDXドキュメントが使用されているとします。

 <?xml version="1.0" encoding="UTF-8"?>
 <DDX xmlns="https://ns.adobe.com/DDX/1.0/">
        <PDF result="out.pdf">
        <Header>
         <Center>
             <StyledText>
                 <p font-size="20pt"><BatesNumber/></p>
             </StyledText>
         </Center>
     </Header>
           <PDF source="map.pdf" />
          <PDF source="directions.pdf" />
          </PDF>
 </DDX>

このDDXドキュメントは、map.pdf​および​directions.pdf​という2つのPDFドキュメントを1つのPDFドキュメントにマージします。 結果のPDFドキュメントには、一意のページ識別子で構成されるヘッダーが含まれます。 例えば、上の図のドキュメントは000016です。

メモ

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

メモ

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

メモ

DDXドキュメントについて詳しくは、『AssemblerサービスとDDXリファレンス』を参照してください。

手順の概要

一意のページ識別子(ベイツナンバリング)を含むPDFドキュメントをアセンブリするには、次のタスクを実行します。

  1. プロジェクトファイルを含めます。
  2. PDFアセンブラークライアントを作成します。
  3. 既存のDDXドキュメントの参照
  4. 入力PDFドキュメントを参照します。
  5. 初期ベイツ数値を設定します。
  6. 入力PDFドキュメントをアセンブリします。
  7. 結果を抽出します。

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

必要なファイルを開発プロジェクトに含めます。 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ファイルに置き換える必要があります。 すべてのAEM Forms JARファイルの場所について詳しくは、「AEM Forms Javaライブラリファイルを含める」を参照してください。

PDFアセンブラークライアントの作成

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

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

PDFドキュメントをアセンブリするには、DDXドキュメントを参照する必要があります。 例えば、この節で紹介したDDXドキュメントについて考えてみましょう。 一意のページ識別子を含むPDFドキュメントをアセンブリするには、DDXドキュメントにBatesNumber要素を含める必要があります。

入力PDFドキュメントの参照

PDFドキュメントをアセンブリするには、入力PDFドキュメントを参照する必要があります。 例えば、map.pdfドキュメントとdirections.pdfドキュメントを参照して、これらのPDFドキュメントを1つのPDFドキュメントにアセンブリする必要があります。

ベイツ数の初期値を設定する

ビジネス要件に合わせて、初期ベイツ数値を設定できます。 例えば、初期値を000100に設定する必要があるとします。 初期値を設定しない場合、最初のページの値は000000になります。

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

Assemblerサービスクライアントを作成し、BatesNumber要素情報を含むDDXドキュメントを参照し、入力PDFドキュメントを参照し、実行時オプションを設定したら、invokeDDX操作を呼び出して、一意のページ識別子を含むPDFドキュメントをAssemblerサービスでアセンブリできます。

結果の抽出

Assemblerサービスは、ジョブ結果を含むコレクションオブジェクトを返します。 結果のPDFドキュメントと、スローされた例外を抽出できます。 この場合、暗号化されたPDFドキュメントはコレクションオブジェクト内に配置されます。

メモ

invokeDDX操作を呼び出すと、コレクションオブジェクトが返されます。 この操作は、2つ以上の入力PDFドキュメントをAssemblerサービスに渡す場合に使用されます。 ただし、1つの入力PDFドキュメントのみをAssemblerサービスに渡す場合は、invokeOneDocument操作を呼び出す必要があります。 この操作の使用について詳しくは、暗号化されたPDFドキュメントのアセンブリを参照してください。

関連トピック

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

接続プロパティの設定

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

Java APIを使用して、ベイツナンバリングを使用してドキュメントをアセンブリします。

AssemblerサービスAPI(Java)を使用して、一意のページ識別子(ベイツナンバリング)を使用するPDFドキュメントをアセンブリします。

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

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

  2. PDFアセンブラークライアントを作成します。

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

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

    • HashMapコンストラクターを使用して、入力PDFドキュメントの格納に使用するjava.util.Mapオブジェクトを作成します。

    • 各入力PDFドキュメントに対して、コンストラクターを使用し、入力PDFドキュメントの場所を渡してjava.io.FileInputStreamオブジェクトを作成します。 この場合、保護されていないPDFドキュメントの場所を渡します。

    • 入力PDFドキュメントごとに、com.adobe.idp.Documentオブジェクトを作成し、そのPDFドキュメントを含むjava.io.FileInputStreamオブジェクトを渡します。

    • putメソッドを呼び出し、次の引数を渡して、java.util.Mapオブジェクトにエントリを追加します。

      • キー名を表すstring値です。 この値は、DDXドキュメントで指定されたPDFソース要素の値と一致する必要があります。 例えば、この節で紹介するDDXドキュメントで指定するPDFソースファイルの名前はLoan.pdfです。
      • 保護されていないPDFドキュメントを含むcom.adobe.idp.Documentオブジェクト。
  5. 初期ベイツ数値を設定します。

    • コンストラクターを使用して、実行時オプションを格納するAssemblerOptionSpecオブジェクトを作成します。
    • AssemblerOptionSpecオブジェクトのsetFirstBatesNumberを呼び出し、初期値を指定する数値を渡すことで、初期ベイツ数を設定します。
  6. 入力PDFドキュメントをアセンブリします。

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

    • DDXドキュメントを表すcom.adobe.idp.Documentオブジェクト。
    • 入力の保護されていないPDFファイルが格納されているjava.util.Mapオブジェクト。
    • デフォルトのフォントやジョブのログレベルを含む、実行時のオプションを指定するcom.adobe.livecycle.assembler.client.AssemblerOptionSpecオブジェクト。

    invokeDDXメソッドは、パスワードで暗号化されたPDFドキュメントを含むcom.adobe.livecycle.assembler.client.AssemblerResultオブジェクトを返します。

  7. 結果を抽出します。

    新しく作成したPDFドキュメントを取得するには、次の操作を実行します。

    • AssemblerResultオブジェクトのgetDocumentsメソッドを呼び出します。 このアクションはjava.util.Mapオブジェクトを返します。
    • java.util.Mapオブジェクトを繰り返し処理して、com.adobe.idp.Documentオブジェクトを見つけます。
    • com.adobe.idp.DocumentオブジェクトのcopyToFileメソッドを呼び出して、PDFドキュメントを抽出します。

関連トピック

クイックスタート(SOAPモード):Java APIを使用したベート番号付きPDFドキュメントのアセンブリ

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

接続プロパティの設定

WebサービスAPIを使用して、ベイツナンバリングを使用してドキュメントを組み立てる

Assemblerサービス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. PDFアセンブラークライアントを作成します。

    • デフォルトのコンストラクターを使用してAssemblerServiceClientオブジェクトを作成します。

    • System.ServiceModel.EndpointAddressコンストラクターを使用してAssemblerServiceClient.Endpoint.Addressオブジェクトを作成します。 AEM FormsサービスにWSDLを指定する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認証を有効にします。

      • フィールドAssemblerServiceClient.ClientCredentials.UserName.UserNameにAEM formsユーザー名を割り当てます。
      • 対応するパスワード値をフィールドAssemblerServiceClient.ClientCredentials.UserName.Passwordに割り当てます。
      • フィールドBasicHttpBindingSecurity.Transport.ClientCredentialTypeに定数値HttpClientCredentialType.Basicを割り当てます。
      • フィールドBasicHttpBindingSecurity.Security.Modeに定数値BasicHttpSecurityMode.TransportCredentialOnlyを割り当てます。
  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ドキュメントを参照します。

    • 各入力PDFドキュメントに対して、コンストラクタを使用してBLOBオブジェクトを作成します。 BLOBオブジェクトは、入力PDFドキュメントの保存に使用されます。
    • コンストラクターを呼び出して、System.IO.FileStreamオブジェクトを作成します。 入力PDFドキュメントのファイルの場所と、ファイルを開くモードを表すstring値を渡します。
    • System.IO.FileStreamオブジェクトの内容を格納するバイト配列を作成します。 System.IO.FileStreamオブジェクトのLengthプロパティを取得することで、バイト配列のサイズを判断できます。
    • System.IO.FileStreamオブジェクトのReadメソッドを呼び出して、バイト配列にストリームデータを入力します。 読み取るバイト配列、開始位置、ストリーム長を渡します。
    • BLOBオブジェクトのMTOMプロパティにバイト配列の内容を割り当てて、オブジェクトを設定します。
    • MyMapOf_xsd_string_To_xsd_anyTypeオブジェクトを作成します。 このコレクションオブジェクトは、入力PDFドキュメントの保存に使用されます。
    • 入力PDFドキュメントごとに、MyMapOf_xsd_string_To_xsd_anyType_Itemオブジェクトを作成します。 例えば、2つの入力PDFドキュメントを使用する場合、2つのMyMapOf_xsd_string_To_xsd_anyType_Itemオブジェクトを作成します。
    • MyMapOf_xsd_string_To_xsd_anyType_Itemオブジェクトのkeyフィールドに、キー名を表すstring値を割り当てます。 この値は、DDXドキュメントで指定されたPDFソース要素の値と一致する必要があります。 (このタスクは、入力PDFドキュメントごとに実行します)。
    • PDFドキュメントを格納するBLOBオブジェクトをMyMapOf_xsd_string_To_xsd_anyType_Itemオブジェクトのvalueフィールドに割り当てます。 (このタスクは、入力PDFドキュメントごとに実行します)。
    • MyMapOf_xsd_string_To_xsd_anyType_ItemオブジェクトをMyMapOf_xsd_string_To_xsd_anyTypeオブジェクトに追加します。 MyMapOf_xsd_string_To_xsd_anyTypeオブジェクトのAddメソッドを呼び出して、MyMapOf_xsd_string_To_xsd_anyTypeオブジェクトを渡します。 (このタスクは、入力PDFドキュメントごとに実行します)。
  5. 初期ベイツ数値を設定します。

    • コンストラクターを使用して、実行時オプションを格納するAssemblerOptionSpecオブジェクトを作成します。
    • AssemblerOptionSpecオブジェクトに属するfirstBatesNumberデータメンバーに数値を割り当てて、初期のBates番号を設定します。
  6. 入力PDFドキュメントをアセンブリします。

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

    • DDXドキュメントを表すBLOBオブジェクト。
    • 入力PDFドキュメントを含むMyMapOf_xsd_string_To_xsd_anyTypeオブジェクト。 キーはPDFソースファイルの名前と一致する必要があり、値はそれらのファイルに対応するBLOBオブジェクトである必要があります。
    • 実行時オプションを指定するAssemblerOptionSpecオブジェクト。

    invokeメソッドは、ジョブの結果と発生した例外を含むAssemblerResultオブジェクトを返します。

  7. 結果を抽出します。

    新しく作成したPDFドキュメントを取得するには、次の操作を実行します。

    • AssemblerResultオブジェクトのdocumentsフィールド(結果のPDFドキュメントを含むMapオブジェクト)にアクセスします。
    • 結果のドキュメントの名前と一致するキーが見つかるまで、Mapオブジェクトを繰り返し処理します。 次に、配列メンバのvalueBLOBにキャストします。
    • BLOBオブジェクトのMTOMプロパティにアクセスして、PDFドキュメントを表すバイナリデータを抽出します。 PDFファイルに書き出すことができるバイトの配列を返します。

関連トピック

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

このページ