PDFBoxでPDFフォームに値を出力するときに、複数行テキストフィールドのフォントサイズを「自動」に設定しても期待通り動作するようになりました。すごくニッチなニーズだと思いますが、実際にこの制限で困っている身としては喜びしかないです。
Sub-task
- [PDFBOX-3910] - Support auto font sizing in multiline text fields
Before
以前は、フォントサイズが自動かつ複数行オプションをONにしたPDFフォームがあっても、PDFBoxでテキストを出力すると自動的に文字サイズが調整されませんでした。そのため、途中改行が多かったり(下図2行目)、文字数が多かったり(下図3行目)すると、固定フォントサイズの場合と同様に文字が見切れる問題がありました。
After
PDFBox v2.0.21からは、このような場合にも期待通りに文字サイズが調整されてPDF出力されるようになりました。そのため、どれくらいの文字数を出力したいか事前に決まっていない場合でも、(文字は小さくなるものの)見切れることなく出力することが可能になります。いいね
なお、フォントサイズには最大値と最小値が定められているようで、例えばあまりにも文字サイズが小さくなる場合は、それ以上縮小されなくなります。なので、従来どおり見切れてしまうことがあります(下図は、3行、5行、7行それぞれ出力して7行が収まらない例)。
蛇足
リリースノートでは v2.0.21 で対応したことになっていますが、実際には v2.0.19 から使えるようです。ただ、文字数が少ない場合に過剰に大きく表示されてしまう問題があるようなので、最新版を利用することをおすすめします。
まとめ
PDFBoxがとうとう複数行テキストフィールドの自動フォントサイズに対応してくれました。PDFフォームとPDFBoxを使って帳票出力する場合に表現の幅が広がるので、試してみてはいかがでしょうか。