0

実際に出力を生成せずに、MY xsl:fo 生成された PDF ファイルが 1 ページを超えるかどうかを判断しようとしています。サーバーでは Apache-FOP 0.95 を使用しており、XSL-FO テンプレートに渡す前に、PHP DOMDocument クラスを使用して XML データを生成しています。

私の質問:

xsl:fo 出力をシミュレートし、アプリケーションで使用できるレポートを送信できる PHP ライブラリはありますか?

または、実際にファイルを生成せずにレポートを送信する Apache FOP 自体 (または兄弟 Java アプリ) の方法はありますか? 私は FOP のドキュメントを読んでいますが、完全に理解できないいくつかのことを除けば、FOP 内からそれを行う方法を見つけることができませんでした。

4

1 に答える 1

2

ドキュメントをレイアウト エンジンで実際に実行しない限り、ドキュメントを「シミュレート」することはできません。また、異なる FO プロセッサはわずかに異なる出力を生成する可能性があるため、ある結果から別のページ数を推測することはできません。

Apache FOP 0.95 でできることは、いわゆるArea Tree XML (または中間形式)を生成することです。たとえば、レイアウト結果を基本的にPDFではなくXMLファイルとして出力します。次に、XPath (または XSLT) を使用してその XML ファイルを検査し、ページ数を特定できます。XML 形式は正式には説明されていませんが、ページ数を決定する方法はすぐにわかります。したがって、コマンドラインで「-pdf output.pdf」の代わりに「-at application/pdf Simulation.xml」を使用すると、その XML 形式を生成できます。もちろん、最終的なドキュメントを生成するために必要な処理のほとんどは、この場合に実行する必要があるため、PDF 生成のためにドキュメント全体を再実行すると、かなりの時間がかかります。幸いなことに、AT XML を入力として再度使用して最終的な PDF を生成できるため、レイアウト ステージを再度実行する必要はありません (ドキュメントの「-atin」パラメーターを参照)。

もちろん、最終的なドキュメントのページ数を決定するために PDF ツールを使用することもできます。

HTH

于 2010-06-12T07:14:50.723 に答える