しおりによるPDFドキュメントのアセンブリ

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

しおりを含むPDFドキュメントをアセンブリできます。 例えば、しおりを含まないPDFドキュメントがあり、しおりを指定して変更するとします。 Assemblerサービスを使用すると、しおりを含まないPDFドキュメントにそのドキュメントを渡し、しおりを含むPDFドキュメントに戻すことができます。

ブックマークには、次のプロパティが含まれます。

  • 画面にテキストとして表示されるタイトル。
  • ユーザーがブックマークをクリックした場合の動作を指定するアクション。 ブックマークの一般的なアクションは、現在のドキュメント内の別の場所に移動するか、別のPDFドキュメントを開くことですが、他のアクションを指定することもできます。

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

 <?xml version="1.0" encoding="UTF-8"?>
 <DDX xmlns="https://ns.adobe.com/DDX/1.0/">
       <PDF result="FinalDoc.pdf">
          <PDF source="Loan.pdf">
             <Bookmarks source="doc2" />
          </PDF>
       </PDF>
 </DDX>

このDDXドキュメント内で、ソース属性に値Loan.pdfが割り当てられていることに注意してください。 このDDXドキュメントは、単一のPDFドキュメントがAssemblerサービスに渡されるように指定します。 しおりを含むPDFドキュメントをアセンブリする場合は、結果ドキュメント内のしおりを説明するしおりXMLドキュメントを指定する必要があります。 ブックマークXMLドキュメントを指定するには、DDXドキュメントでBookmarks要素が指定されていることを確認します。

この例のDDXドキュメントでは、 Bookmarks要素でdoc2を値として指定しています。 この値は、Assemblerサービスに渡される入力マップにdoc2という名前のキーが含まれていることを示します。 doc2キーの値は、ブックマークXMLドキュメントを表すcom.adobe.idp.Document値です。 (『AssemblerサービスとDDXリファレンス』の「ブックマーク言語」を参照)。

このトピックでは、次のXMLしおり言語を使用して、しおりを含むPDFドキュメントを構成します。

 <?xml version="1.0" encoding="UTF-8"?>
 <Bookmarks xmlns="https://ns.adobe.com/pdf/bookmarks" version="1.0">
       <Bookmark>
          <Action>
             <Launch NewWindow="true">
                <File Name="C:\Adobe\LoanDetails.pdf" />
             </Launch>
          </Action>
         <Title>Open the Loan document</Title>
       </Bookmark>
 <Bookmark>
          <Action>
             <Launch>
                <Win Name="C:\WINDOWS\notepad.exe" />
             </Launch>
          </Action>
     <Title>Launch NotePad</Title>
       </Bookmark>
 </Bookmarks>

このブックマークXMLドキュメント内に、ユーザーがブックマークをクリックしたときに実行されるアクションを定義するAction要素があることに注意してください。 Action要素の下には、NotePadなどのアプリケーションを起動し、PDFファイルなどのファイルを開くLaunch要素があります。 PDFファイルを開くには、開くファイルを指定するFile要素を使用する必要があります。 例えば、この節で指定するブックマークXMLファイルでは、開くファイルの名前はLoanDetails.pdfです。

メモ

サポートされるアクションについて詳しくは、『AssemblerサービスとDDXリファレンス』の「Action要素」を参照してください。

この節で指定したDDXドキュメントと、XMLファイルを入力としてブックマークすると、Assemblerサービスは、次のブックマークを含むPDFドキュメントをアセンブリします。

aw_aw_bmark

ユーザーが​Open the Loan Details​ブックマークをクリックすると、LoanDetails.pdfが開きます。 同様に、ユーザーが​NotePad​のブックマークをクリックすると、NotePadが起動します。

メモ

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

メモ

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

メモ

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

手順の概要

しおりを含むPDFドキュメントをアセンブリするには、次のタスクを実行します。

  1. プロジェクトファイルを含めます。
  2. PDFアセンブラークライアントを作成します。
  3. 既存のDDXドキュメントの参照
  4. しおりを追加するPDFドキュメントを参照します。
  5. ブックマークXMLドキュメントを参照します。
  6. PDFドキュメントとブックマークXMLドキュメントをMapコレクションに追加します。
  7. 実行時オプションを設定します。
  8. PDFドキュメントをアセンブリします。
  9. しおりを含む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ファイルに置き換える必要があります。 すべてのAEM Forms JARファイルの場所について詳しくは、「AEM Forms Javaライブラリファイルを含める」を参照してください。

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

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

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

PDFドキュメントをアセンブリするには、DDXドキュメントを参照する必要があります。 このDDXドキュメントにはBookmarks要素が必要です。この要素は、ブックマークを含むPDFをアセンブルするようにAssemblerサービスに指示します。 (この節で前述したDDXドキュメントの例を参照)。

しおりを追加するPDFドキュメントの参照

しおりを追加するPDFドキュメントを参照します。 参照先のPDFドキュメントに既にしおりが含まれているかどうかは関係ありません。 Bookmarks要素がPDFソース要素の子の場合、PDFソースに既に存在するしおりがしおりに置き換えられます。 ただし、既存のしおりを保持する場合は、 BookmarksがPDFソース要素の兄弟であることを確認してください。 例えば、次の例を考えてみましょう。

 <PDF result="foo">
      <PDF source="inDoc"/>
      <Bookmarks source="doc2"/>
 </PDF>

ブックマークXMLドキュメントの参照

新しいしおりを含むPDFをアセンブリするには、しおりXMLドキュメントを参照する必要があります。 ブックマークXMLドキュメントは、Mapコレクションオブジェクト内のAssemblerサービスに渡されます。 (例については、この節で前述したブックマークXMLドキュメントを参照してください)。

メモ

AssemblerサービスとDDXリファレンス』の「ブックマーク言語」を参照してください。

PDFドキュメントとブックマークXMLドキュメントをMapコレクションに追加します

ブックマークを追加するPDFドキュメントとブックマークXMLドキュメントの両方をMapコレクションに追加する必要があります。 したがって、 Mapコレクションオブジェクトには次の2つの要素が含まれます。PDFドキュメントとブックマークXMLドキュメント。

実行時オプションの設定

ジョブの実行中にAssemblerサービスの動作を制御する実行時オプションを設定できます。 例えば、エラーが発生した場合にジョブの処理を続行するようAssemblerサービスに指示するオプションを設定できます。 設定できる実行時オプションについて詳しくは、『AEM Forms APIリファレンス』のAssemblerOptionSpecクラス参照を参照してください。

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

新しいブックマークを含むPDFドキュメントをアセンブリするには、AssemblerサービスのinvokeDDX操作を使用します。 invokeOneDocumentなどの他のAssemblerサービス操作とは異なり、invokeDDX操作を使用する必要があるのは、Assemblerサービスには、Mapコレクションオブジェクト内で渡されるブックマークXMLドキュメントが必要だからです。 このオブジェクトは、invokeDDX操作のパラメーターです。

しおりを含むPDFドキュメントを保存します

返されたマップオブジェクトから結果を抽出し、対応するPDFドキュメントを保存する必要があります。 (PDFドキュメントのプログラムによるアセンブリの「結果の抽出」を参照)。

関連トピック

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

接続プロパティの設定

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

Java APIを使用して、しおりを使用してPDFドキュメントをアセンブリします。

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ドキュメントを参照します。

    • コンストラクターを使用してPDFドキュメントの場所を渡し、java.io.FileInputStreamオブジェクトを作成します。
    • コンストラクターを使用してcom.adobe.idp.Documentオブジェクトを作成し、PDFドキュメントを含むjava.io.FileInputStreamオブジェクトを渡します。
  5. ブックマークXMLドキュメントを参照します。

    • コンストラクターを使用して、ブックマークXMLドキュメントを表すXMLファイルの場所を渡し、java.io.FileInputStreamオブジェクトを作成します。
    • com.adobe.idp.Documentオブジェクトを作成し、PDFドキュメントを含むjava.io.FileInputStreamオブジェクトを渡します。
  6. PDFドキュメントとブックマークXMLドキュメントをMapコレクションに追加します。

    • 入力PDFドキュメントとブックマークXMLドキュメントの両方を保存するためのjava.util.Mapオブジェクトを作成します。

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

      • キー名を表すstring値です。 この値は、DDXドキュメントで指定されたPDFソース要素の値と一致する必要があります。
      • 入力PDFドキュメントを含むcom.adobe.idp.Documentオブジェクト。
    • java.util.Mapオブジェクトのputメソッドを呼び出し、次の引数を渡して、ブックマークXMLドキュメントを追加します。

      • キー名を表すstring値です。 この値は、DDXドキュメントで指定されているBookmarks source要素の値と一致する必要があります。
      • ブックマークXMLドキュメントを含むcom.adobe.idp.Documentオブジェクト。
  7. 実行時オプションを設定します。

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

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

    • 使用するDDXドキュメントを表すcom.adobe.idp.Documentオブジェクト
    • 入力PDFドキュメントとブックマークXMLドキュメントの両方を含むjava.util.Mapオブジェクト。
    • デフォルトのフォントやジョブのログレベルを含む、実行時のオプションを指定するcom.adobe.livecycle.assembler.client.AssemblerOptionSpecオブジェクト

    invokeDDXメソッドは、ジョブの結果と発生した例外を含むcom.adobe.livecycle.assembler.client.AssemblerResultオブジェクトを返します。

  9. しおりを含むPDFドキュメントを保存します。

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

    • AssemblerResultオブジェクトのgetDocumentsメソッドを呼び出します。 java.util.Mapオブジェクトを返します。
    • java.util.Mapオブジェクトを繰り返し処理して、結果のcom.adobe.idp.Documentオブジェクトを見つけます。 (DDXドキュメントで指定されたPDF結果要素を使用して、ドキュメントを取得できます)。
    • com.adobe.idp.DocumentオブジェクトのcopyToFileメソッドを呼び出して、PDFドキュメントを抽出します。

関連トピック

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

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

接続プロパティの設定

WebサービスAPIを使用して、PDFドキュメントをブックマークと組み合わせます。

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ドキュメントを参照します。

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

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

    • MyMapOf_xsd_string_To_xsd_anyTypeオブジェクトを作成します。 このコレクションオブジェクトは、入力PDFドキュメントとブックマークXMLドキュメントを保存するために使用します。
    • 入力PDFドキュメントとブックマークXMLドキュメントごとに、 MyMapOf_xsd_string_To_xsd_anyType_Itemオブジェクトを作成します。
    • MyMapOf_xsd_string_To_xsd_anyType_Itemオブジェクトのkeyフィールドに、キー名を表すstring値を割り当てます。 この値は、DDXドキュメントで指定されたPDFソース要素の値と一致する必要があります。
    • PDFドキュメントを格納するBLOBオブジェクトをMyMapOf_xsd_string_To_xsd_anyType_Itemオブジェクトのvalueフィールドに割り当てます。
    • 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ドキュメントとブックマークXMLドキュメントごとに実行します)。
  7. 実行時オプションを設定します。

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

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

    • DDXドキュメントを表すBLOBオブジェクト
    • 入力ドキュメントを含むMyMapOf_xsd_string_To_xsd_anyType配列
    • 実行時オプションを指定するAssemblerOptionSpecオブジェクト

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

  9. しおりを含むPDFドキュメントを保存します。

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

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

関連トピック

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

このページ