これが私の現在のワークフローです:
- データベースから POJO をロードします。
- それらを Velocity に渡し、HTML テンプレートをメモリ内でレンダリングします。
- 次に、Flying Saucer と iText を使用して、出力された HTML を PDF にレンダリングします。
この問題は、画像などの相対 URL を解決しようとすると発生します。ドキュメントはメモリ内にあるため、画像やスタイルシートを解決する方法がまったくわかりません。リソースをロードするディレクトリを渡しながら、ドキュメントをメモリ内の String オブジェクトに設定するにはどうすればよいですか?
String velocityOutput = VelocityEngineUtils.mergeTemplateIntoString(...);
ByteArrayOutputStream output = new ByteArrayOutputStream(...);
ITextRenderer renderer = new ITextRenderer();
renderer.setDocumentFromString(velocityOutput);
renderer.layout();
renderer.createPDF(output);
クライアントにメールで送信するレポートを生成しているだけなので、すべてをメモリ内で行う必要があります。<img src="..."/>
PDF に生成されたときに、HTML テンプレートで相対 URL を解決するにはどうすればよいですか?