Skip to content

An implementation of the Thinreports Generator in PHP. It provides easy and simple way for generating a PDF on pure PHP.

License

Notifications You must be signed in to change notification settings

nullx2/thinreports-php

 
 

Repository files navigation

Original README is here

Thinreports Generator PHP2

概要

このリポジトリは「Thinreports Generator for PHP」に対して、以下の対応を追加したものです。

上記、一部の修正については、依存ライブラリ「TCPDF」への改修を伴っています。

動機

  • (Ruby版の使用実績から)Thinreportsを使用したかった。
  • PHP版が(Ruby版と比べて)バージョンアップに追従できていなかった(...事を採用前に確認できていなかった)。
  • 最新のレイアウトである必要は無かったが、Listへの対応と合わせてjsonレイアウトへの変更も行った。
  • (改修開始時点では)PDFのIVS対応がこんなに困難だとは思っていなかった。
    • IVS対応が出来なければ、要件的に外字の管理という不毛な事を続けなければならなかったため、MUST条件。

各修正に対する特記事項

レイアウトファイルへの対応状況

  • おおよそ1年前のThinreports (Basic) Editorで作成可能なレイアウトファイルにおける機能(設定項目)については、概ね対応していますが、完全な対応を確認している訳ではありません。
  • Ruby版が出力するPDFとの互換性は不明です。

Unicode IVS対応に伴うフォントの取り扱い

  • Unicode IVSを利用するには対応したフォントを利用する必要がありますが、Editorで選択可能なフォント(IPAフォント)では利用できません。
  • src/Thinreports/Generator/PDF/Font.php$override_fontsにおいて、IPAフォントを強制的にNotoフォントに切り替える手段を実装していますが、どう考えてもナンセンスです。
    • 恐らく、レイアウトファイルにおいてフォールバックフォントを設定出来るようにした上で、適当な切り替えを行うべきなのでしょうが、既存の実装状況や時間的な制約により実現できていません。

フォントスタイル

  • bold、italic等のフォントスタイルがフォントに組み込まれていない場合、変形などによる代替処理を行います。

SVG画像の取り込み

  • TCPDFのSVGファイルの処理に依存しています。
    • SVGファイルの内容によっては正しく取り込まれないケースがあります。

折り返し

  • テキストの折り返し時に日本語の禁則処理を行っていますが、禁則条件などの実装はTCPDF側への対応のみとなっています。

今後の対応について

  • 主要な改修は需要側が満足したため終了しています。
  • 特に反応が無い限りは、個人レベルで必要に応じて改修していく予定です。
  • 今回の改修内容についてPullReqを予定していましたが、改修内容が本体(Ruby版)の仕様に影響を及ぼしうる点と、改修範囲が依存しているライブラリにまで及んでいる点などから困難と判断しました。
    • 細切れにしてPullReqする手間に対する見返りが期待できないという事です。
    • ライセンス等については変更していないので、今回の変更内容を取り込んで頂くことに問題はありません。

About

An implementation of the Thinreports Generator in PHP. It provides easy and simple way for generating a PDF on pure PHP.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • PHP 100.0%