PDF 生成で多数の PDF を WorkBench で印刷できない PDF-generation-fails-to-print-a-large-number-of-PDFs-via-WorkBench
問題 issue
お客様が WorkBench を通じて実装されたサービスを使用して多数の PDF を生成する場合。サービスはメモリ不足のため失敗します。エラーは、次のように表示されます。
ALC-OUT-002-013: XMLFormFactory, PAexecute failure: "0: Out of Memory"
これは、Windows では印刷要求の最大ページ数が約 1,000 ページに制限されているからです。印刷出力を生成する際は、テンプレートとデータをメモリに読み込む必要があり、結果のレイアウトはメモリ内に作成されます。つまり、最終的な出力のサイズに制限があります。印刷出力を生成するプロセスは 32 ビットタスクで、Windows では 2 GB の RAM に制限されます。
適用先 applies-to
この解決策は x86_win32 XMLFM 用の AEM Forms に適用されます。
解決策 solution
メモリ使用量に影響する最大の要因は、フォーム上のデータ量です。ただし、フォームの設計には、メモリ使用量に対してそれほど影響を与えないその他の要因があります。これらの要因を認識している場合は、より大規模な印刷出力用のフォームを設計できます。次の節では、メモリフットプリントに影響を与える要因を優先順に示します。
影響要因 impact-factor
高
- 選択サブフォーム - 選択サブフォームセットは、サブフォームセットオブジェクトの一種で、条件ステートメントを使用してサブフォームセット内の特定のサブフォームの表示をカスタマイズするのに使用できます。
- キャプションの代わりに静的テキストを使用 - ほとんどのフィールドでは内部にキャプションが用意されているので、ユーザーは、静的テキストをキャプションとして追加するのではなく、このキャプションを使用する必要があります。
- 可能な限り、リッチテキスト形式(RTF) を使用します。
平均
メモリ使用量の改善に役立つフォームテンプレート設計時に考慮すべき追加要因を次に示します。
- 静的テキストを使用してフィールドにラベルを付けるのを避けます。代わりに、テキストフィールドのキャプションを使用します。
- 長方形、線、オブジェクトおよびテーブルを使用しすぎないようにします。
- リッチテキストや選択サブフォームの使用はできるだけ避けます。
- サブフォームやネストされたサブフォームの過度の使用を避けます。
データサイズの制限 data-size-limitations
プロセスのメモリ量に上限があるので、プロセスで消費されるメモリ量はデータファイルのサイズにのみ依存するわけではありません。フォームデザインに密接に関係し、フォーム内で結合される実際の量のデータにもある程度関係しています。
小さなデータを持つ小さなノードがフォームに多数ある場合、プロセスは、大きなデータを持つ少数のノードがあるフォームよりも多くのメモリを消費します(したがって、メモリ不足が発生しやすくなります)。
詳しくは、以下の付録を参照してください。そこで示されるテスト結果は印刷フォーム(タグなし PDF)に基づいています。タグ付き PDF を使用すると、プロセスに必要なメモリが増えます。また、フォーム内のフィールドの数にも左右されます。大まかに、プロセスに必要なメモリは、タグなし PDF の場合の 1.5 倍をわずかに上回ります。
インタラクティブフォーム interactive-forms
インタラクティブフォームでは、インタラクティブフィールドが再びレンダリングされるので、印刷フォームよりも多くのメモリを消費します。実施したテストでは、メモリ消費量が印刷フォームと比べて約 1.5 倍増加し、これらは静的なインタラクティブフォームでした。
画像形式 image-formats
特定の画像形式はお勧めしません。ただし、PNG(Portable Network Graphics)などの、より小さいサイズの画像を使用することをお勧めします。また、サイズが数百メガバイトもあるような高解像度の画像を使用することもお勧めしません。さらに、解凍時にサイズが数百メガバイトに増大する圧縮画像の使用はお勧めしません。
付録 appendix
テーブルの例
単純なテーブルと複雑なテーブルのレンダリングページ数とデータサイズの比較を示すテーブルの様々な例を次に示します。
-
1 列のテーブル(5,000 ページの PDF が生成され、データファイルサイズが 24 MB で、30,000 件のレコードを含む)。
-
多数の小さな列を持つテーブル(800 ページの PDF が生成され、データファイルサイズが 4.6 MB で、20,000 件のレコードを含む)。
-
多数の小さな列を持つテーブル(より大きな xml タグ名を使用しているので、データファイルがより大きくなる)。
これは前のテーブルと同じですが、xml タグ名が大きくなっており(そのため実際の有効なデータが増えずにデータファイルサイズが大きくなる)、最終結果(上限)はほぼ同じです。ただし、データファイルサイズは 4.6 MB から 44.6 MB に増加しました。このテーブルでは、800 ページの PDF が生成され、データファイルサイズが 44.6 MB で、20,000 件のレコードを含んでいます。
したがって、データファイルサイズに一般的な上限を設けるのは困難です。各フォームは固有のものなので、メモリ消費量はフォームごとに異なります。