ドキュメントがPDF/Aに準拠しているかどうかを確認する

Assemblerサービスを使用すると、PDFドキュメントがPDF/Aに準拠しているかどうかを確認できます。 PDF/Aドキュメントは、ドキュメントのコンテンツを長期間保存するためのアーカイブ形式として存在します。 フォントはドキュメント内に埋め込まれ、ファイルは圧縮されません。その結果、通常、PDF/A ドキュメントは標準の PDF ドキュメントよりも大きくなります。また、PDF/A ドキュメントには、オーディオおよびビデオコンテンツは含まれません。

PDF/A-1仕様は、AとBの2つの準拠レベルで構成されています。2つのレベルの主な違いは、論理構造(アクセシビリティ)のサポートです。これは、準拠レベルBには必要ありません。準拠レベルにかかわらず、PDF/A-1は、生成されたPDF/Aドキュメントにすべてのフォントを埋め込むことを指示します。 現時点では、検証(および変換)ではPDF/A-1bのみがサポートされています。

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

 <?xml version="1.0" encoding="UTF-8"?>
 <DDX xmlns="https://ns.adobe.com/DDX/1.0/">
         <DocumentInformation source="Loan.pdf" result="Loan_result.xml">
         <PDFAValidation compliance="PDF/A-1b" resultLevel="Detailed"                       ignoreUnusedResources="true" allowCertificationSignatures="true" />
     </DocumentInformation>
 </DDX>

このDDXドキュメント内で、DocumentInformation要素がAssemblerサービスに対して、入力PDFドキュメントに関する情報を返すように指示します。 DocumentInformation要素内で、PDFAValidation要素は、入力PDFドキュメントがPDF/Aに準拠しているかどうかをAssemblerサービスに示します。

Assemblerサービスは、PDFAConformance要素を含むXMLドキュメント内で、入力PDFドキュメントがPDF/Aに準拠しているかどうかを指定する情報を返します。 入力PDFドキュメントがPDF/Aに準拠している場合、PDFAConformance要素のisCompliant属性の値はtrueです。 PDFドキュメントがPDF/Aに準拠していない場合、PDFAConformance要素のisCompliant属性の値はfalseです。

メモ

この節で指定するDDXドキュメントにはDocumentInformation要素が含まれているので、AssemblerサービスはPDFドキュメントではなくXMLデータを返します。 つまり、Assemblerサービスは、PDFドキュメントをアセンブリまたはディスアセンブリしません。xmlドキュメント内の入力PDFドキュメントに関する情報を返します。

メモ

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

メモ

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

手順の概要

PDFドキュメントがPDF/Aに準拠しているかどうかを確認するには、次のタスクを実行します。

  1. プロジェクトファイルを含めます。
  2. PDFアセンブラクライアントを作成します。
  3. 既存のDDXドキュメントの参照。
  4. PDF/Aの準拠性の判定に使用されるPDFドキュメントを参照します。
  5. 実行時オプションを設定します。
  6. PDFドキュメントに関する情報を取得します。
  7. 返されたXMLドキュメントを保存します。

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

必要なファイルを開発プロジェクトに含めます。 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ライブラリファイルを含める」を参照してください。

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

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

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

Assemblerサービス操作を実行するには、DDXドキュメントを参照する必要があります。 入力PDFドキュメントがPDF/Aに準拠しているかどうかを確認するには、DDXドキュメントにDocumentInformation要素内にPDFAValidation要素が含まれていることを確認します。 PDFAValidation要素は、入力PDFドキュメントがPDF/Aに準拠しているかどうかを指定するXMLドキュメントを返すようAssemblerサービスに指示します。

PDF/Aの準拠性の判定に使用されるPDFドキュメントの参照

PDFドキュメントがPDF/Aに準拠しているかどうかを確認するには、PDFドキュメントを参照してAssemblerサービスに渡す必要があります。

実行時オプションの設定

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

PDFドキュメントに関する情報の取得

Assemblerサービスクライアントの作成、DDXドキュメントの参照、インタラクティブPDFドキュメントの参照、および実行時オプションの設定が完了したら、invokeDDX操作を呼び出すことができます。 DDXドキュメントにはDocumentInformation要素が含まれているので、AssemblerサービスはPDFドキュメントではなくXMLデータを返します。

返されたXMLドキュメントを保存します

Assemblerサービスが返すXMLドキュメントは、入力PDFドキュメントがPDF/Aに準拠しているかどうかを指定します。 例えば、入力PDFドキュメントがPDF/Aに準拠していない場合、Assemblerサービスは次の要素を含むXMLドキュメントを返します。

 <PDFAConformance isCompliant="false" compliance="PDF/A-1b" resultLevel="Detailed" ignoreUnusedResources="true" allowCertificationSignatures="true">

XMLドキュメントをXMLファイルとして保存し、ファイルを開いて結果を表示できるようにします。

関連トピック

Java APIを使用した、ドキュメントがPDF/Aに準拠しているかどうかの確認

WebサービスAPIを使用した、ドキュメントがPDF/Aに準拠しているかどうかを確認する

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

接続プロパティの設定

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

Java APIを使用した、ドキュメントがPDF/Aに準拠しているかどうかを確認する

Assembler Service API(Java)を使用して、PDFドキュメントがPDF/Aに準拠しているかどうかを確認します。

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

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

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

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

    • コンストラクターを使用し、DDXファイルの場所を指定する文字列値を渡して、DDXドキュメントを表すjava.io.FileInputStreamオブジェクトを作成します。 PDFドキュメントがPDF/Aに準拠しているかどうかを確認するには、DDXドキュメントにDocumentInformation要素内に含まれるPDFAValidation要素が含まれていることを確認します。
    • コンストラクタを使用して com.adobe.idp.Document オブジェクトを渡すことによって、java.io.FileInputStream オブジェクトを作成します。
  4. PDF/Aの準拠性の判定に使用されるPDFドキュメントを参照します。

    • コンストラクターを使用し、PDF/Aの準拠性を判断するために使用するPDFドキュメントの場所を渡して、java.io.FileInputStreamオブジェクトを作成します。

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

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

    • <a0追加/>オブジェクトへのエントリ。そのputメソッドを呼び出し、次の引数を渡すことによって作成します。java.util.Map

      • キー名を表すstring値です。 この値は、DDXドキュメントで指定されたソース要素の値と一致する必要があります。 例えば、この節で紹介するDDXドキュメントにあるsource要素の値はLoan.pdfです。
      • 入力PDFドキュメントを含むcom.adobe.idp.Documentオブジェクトです。
  5. 実行時オプションを設定します。

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

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

    • 使用するDDXドキュメントを表すcom.adobe.idp.Documentオブジェクト
    • PDF/Aの準拠性の判定に使用される入力PDFファイルが含まれるjava.util.Mapオブジェクト
    • 実行時オプションを指定するcom.adobe.livecycle.assembler.client.AssemblerOptionSpecオブジェクト

    invokeDDXメソッドは、入力PDFドキュメントがPDF/Aに準拠しているかどうかを指定するXMLデータを含むcom.adobe.livecycle.assembler.client.AssemblerResultオブジェクトを返します。

  7. 返されたXMLドキュメントを保存します。

    入力PDFドキュメントがPDF/Aドキュメントであるかどうかを指定するXMLデータを取得するには、次の操作を実行します。

    • AssemblerResultオブジェクトのgetDocumentsメソッドを呼び出します。 java.util.Mapオブジェクトを返します。
    • java.util.Mapオブジェクトを繰り返し処理して、結果のcom.adobe.idp.Documentオブジェクトを見つけます。
    • com.adobe.idp.DocumentオブジェクトのcopyToFileメソッドを呼び出して、XMLドキュメントを抽出します。 XMLデータはXMLファイルとして保存してください。

関連トピック

クイック開始(SOAPモード):Java API (SOAPモード)を使用したPDF/A準拠のドキュメントかどうかの判定

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

接続プロパティの設定

WebサービスAPIを使用して、ドキュメントがPDF/Aに準拠しているかどうかを確認します。

Assembler Service API(Webサービス)を使用して、PDFドキュメントがPDF/Aに準拠しているかどうかを確認します。

  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オブジェクトを作成します。 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/Aの準拠性の判定に使用されるPDFドキュメントを参照します。

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

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

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

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

    invokeメソッドは、入力PDFドキュメントがPDF/Aドキュメントであるかどうかを指定するXMLデータを含むAssemblerResultオブジェクトを返します。

  7. 返されたXMLドキュメントを保存します。

    入力PDFドキュメントがPDF/Aドキュメントであるかどうかを指定するXMLデータを取得するには、次の操作を実行します。

    • AssemblerResultオブジェクトのdocumentsフィールドにアクセスします。これは、入力PDFドキュメントがPDF/Aドキュメントであるかどうかを指定するXMLデータが含まれるMapオブジェクトです。
    • Mapオブジェクトを繰り返し処理して、各結果ドキュメントを取得します。 次に、その配列メンバの値をBLOBにキャストします。
    • BLOBオブジェクトのMTOMフィールドにアクセスして、XMLデータを表すバイナリデータを抽出します。 このフィールドには、XMLファイルとして書き出すことができるバイトの配列が格納されます。

関連トピック

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

このページ

Adobe Summit Banner

A virtual event April 27-28.

Expand your skills and get inspired.

Register for free
Adobe Summit Banner

A virtual event April 27-28.

Expand your skills and get inspired.

Register for free