このリポジトリは「Thinreports Generator for PHP」に対して、以下の対応を追加したものです。
- Thinreports Basic Editorで作成する
>=0.9.0
のレイアウトファイルへの対応- List機能の追加対応
- SVG画像の出力
- 折り返し時の禁則処理
- Unicode IVS出力への対応
上記、一部の修正については、依存ライブラリ「TCPDF」への改修を伴っています。
- (Ruby版の使用実績から)Thinreportsを使用したかった。
- PHP版が(Ruby版と比べて)バージョンアップに追従できていなかった(...事を採用前に確認できていなかった)。
- 最新のレイアウトである必要は無かったが、Listへの対応と合わせてjsonレイアウトへの変更も行った。
- (改修開始時点では)PDFのIVS対応がこんなに困難だとは思っていなかった。
- IVS対応が出来なければ、要件的に外字の管理という不毛な事を続けなければならなかったため、MUST条件。
- おおよそ1年前のThinreports (Basic) Editorで作成可能なレイアウトファイルにおける機能(設定項目)については、概ね対応していますが、完全な対応を確認している訳ではありません。
- Ruby版が出力するPDFとの互換性は不明です。
- Unicode IVSを利用するには対応したフォントを利用する必要がありますが、Editorで選択可能なフォント(IPAフォント)では利用できません。
src/Thinreports/Generator/PDF/Font.php
の$override_fonts
において、IPAフォントを強制的にNotoフォントに切り替える手段を実装していますが、どう考えてもナンセンスです。- 恐らく、レイアウトファイルにおいてフォールバックフォントを設定出来るようにした上で、適当な切り替えを行うべきなのでしょうが、既存の実装状況や時間的な制約により実現できていません。
- bold、italic等のフォントスタイルがフォントに組み込まれていない場合、変形などによる代替処理を行います。
- TCPDFのSVGファイルの処理に依存しています。
- SVGファイルの内容によっては正しく取り込まれないケースがあります。
- テキストの折り返し時に日本語の禁則処理を行っていますが、禁則条件などの実装はTCPDF側への対応のみとなっています。
- 主要な改修は需要側が満足したため終了しています。
- 特に反応が無い限りは、個人レベルで必要に応じて改修していく予定です。
- 今回の改修内容についてPullReqを予定していましたが、改修内容が本体(Ruby版)の仕様に影響を及ぼしうる点と、改修範囲が依存しているライブラリにまで及んでいる点などから困難と判断しました。
- 細切れにしてPullReqする手間に対する見返りが期待できないという事です。
- ライセンス等については変更していないので、今回の変更内容を取り込んで頂くことに問題はありません。