暗号化されたPDFドキュメントのアセンブリ

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

Assemblerサービスを使用して、PDFドキュメントをパスワードで暗号化できます。 PDF ドキュメントがパスワードを使用して暗号化されている場合、Adobe Reader または Acrobat で PDF ドキュメントを表示するには、パスワードを指定する必要があります。パスワードを使用して PDF ドキュメントを暗号化するには、PDF ドキュメントの暗号化に必要な暗号化要素の値を DDX ドキュメントに含める必要があります。

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

 <?xml version="1.0" encoding="UTF-8"?>
 <DDX xmlns="https://ns.adobe.com/DDX/1.0/">
        <PDF result="EncryptLoan.pdf" encryption="userProtect">
         <PDF source="inDoc" />
     </PDF>
     <PasswordEncryptionProfile name="userProtect" compatibilityLevel="Acrobat7">
         <OpenPassword>AdobeOpen</OpenPassword>
        </PasswordEncryptionProfile>
 </DDX>

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

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

PDFドキュメントをパスワードで暗号化する場合、AEM formsのインストールにEncryptionサービスを含める必要はありません。 PDFドキュメントの暗号化と復号化を参照してください。

メモ

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

メモ

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

手順の概要

暗号化されたPDFドキュメントをアセンブリするには、次の手順を実行します。

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

Assemblerクライアントの作成

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

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

PDFドキュメントをアセンブリするには、DDXドキュメントを参照する必要があります。 例えば、この節で紹介したDDXドキュメントについて考えてみましょう。 PDFドキュメントを暗号化するには、DDXドキュメントにPasswordEncryptionProfile要素を含める必要があります。

保護されていないPDFドキュメントの参照

保護されていないPDFドキュメントを暗号化するには、参照してAssemblerサービスに渡す必要があります。 既に暗号化されているPDFドキュメントを参照する場合は、例外がスローされます。

実行時オプションの設定

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

ドキュメントを暗号化

Assemblerサービスクライアントを作成し、暗号化情報を含むDDXドキュメントを参照し、保護されていないPDFドキュメントを参照し、実行時オプションを設定したら、invokeOneDocument操作を呼び出すことができます。 入力PDFドキュメントが1つだけAssemblerサービスに渡される(そして1つのドキュメントが返される)ので、invokeDDX操作の代わりにinvokeOneDocument操作を使用できます。

暗号化されたPDFドキュメントの保存

Assemblerサービスに渡されるPDFドキュメントが1つだけの場合、Assemblerサービスは、コレクションオブジェクトではなく1つのドキュメントを返します。 つまり、invokeOneDocument操作を呼び出すと、1つのドキュメントが返されます。 この節で参照するDDXドキュメントには暗号化情報が含まれているので、Assemblerサービスはパスワードで暗号化されたPDFドキュメントを返します。

関連トピック

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

接続プロパティの設定

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

Java APIを使用した暗号化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. ドキュメントを暗号化します。

    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ドキュメントをアセンブリする

  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オブジェクトを作成します。 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ドキュメントの保存に使用されます。 この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. ドキュメントを暗号化します。

    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を使用したAEM Formsの呼び出し

このページ