AEM Forms の Forms Services を使用したインタラクティブ PDF のレンダリング
- 適用対象:
- Experience Manager 6.4
- Experience Manager 6.5
作成対象:
- 中級
- 開発者
AEM Forms で Forms Service API を使用してインタラクティブ PDF をレンダリングする
この記事では、次のサービスに注目します。
- FormsService - PDF ファイルとの間でデータの書き出し/読み込みを行えると共に、xml データを xdp テンプレートに結合してインタラクティブ PDF を生成できるようにする、非常に汎用性の高いサービスです。
AEM Forms API の公式の javadoc については、こちらを参照してください。
次のコードスニペットでは、FormsService の renderPDFForm 操作を使用してインタラクティブ PDF をレンダリングしています。schengen.xdp は、xml データの結合に使用されているテンプレートです。
String uri = "crx:///content/dam/formsanddocuments";
PDFFormRenderOptions renderOptions = new PDFFormRenderOptions();
renderOptions.setAcrobatVersion(AcrobatVersion.Acrobat_11);
renderOptions.setContentRoot(uri);
Document interactivePDF = null;
try {
interactivePDF = formsService.renderPDFForm("schengen.xdp", xmlData, renderOptions);
} catch (FormsServiceException e) {
e.printStackTrace();
}
return interactivePDF;
1 行目:xdp テンプレートを含んだフォルダーの場所
2~4 行目:PDFFormRenderOptions を作成し、そのプロパティを設定します。
7 行目:FormsService の renderPDFForm サービス操作を使用して、インタラクティブ PDF を生成します。
11 行目:生成されたインタラクティブ PDF を呼び出し元のアプリケーションに返します
システム上のサンプルパッケージをテストするには:
-
Felix web コンソールを使用して、DocumentServices サンプルバンドルをダウンロードしてインストールします。
-
Adobe Granite CSRF フィルターを検索します。
-
除外されたセクションに次のパスを追加して、保存します。
-
/bin/generateinteractivepdf
-
Apache Sling Service User Mapper Service を探し、クリックしてプロパティを開きます。
- + アイコン(プラス)をクリックして、次のサービスマッピングを追加します。
- DevelopingWithServiceUser.core:getformsresourceresolver=fd-service
- 「保存」をクリック
- + アイコン(プラス)をクリックして、次のサービスマッピングを追加します。
-
いくつかのフィールドに入力したあと、「ダウンロードして入力」ボタンをクリックします
-
インタラクティブ PDF がローカルシステムにダウンロードされます。
サンプルパッケージには、モバイルフォームに関連付けられたカスタムプロファイルが含まれています。customtoolbar.jsp ファイルを調べてください。この jsp では、モバイルフォームからデータを抽出し、/bin/generateinteractivepdf パスにマウントされているサーブレットに POST リクエストを行います。このサーブレットは、呼び出し元のアプリケーションにインタラクティブ PDF を返します。次に、customtoolbar.jsp のコードにより、ファイルがローカルシステムにダウンロードされます。