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

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

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

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

NOTE

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

NOTE

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

手順の概要

暗号化された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 FormsJARファイルの場所については、「AEM FormsJavaライブラリファイルを含める」を参照してください。

Assemblerクライアントの作成

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

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

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

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

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

実行時オプションの設定

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

ドキュメントを暗号化する

Assemblerサービスクライアントの作成後、暗号化ドキュメントを含むDDXドキュメントを参照し、保護されていないPDF情報を参照し、実行時オプションを設定した後、invokeOneDocument操作を呼び出すことができます。 1つの入力PDFドキュメントのみが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.

    NOTE

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

    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の呼び出し

このページ