pdfme 開発者レター 2024年11月
今月やったこと
今月は主にpdfmeのライブラリの開発にリソースを割り振っていました。
おかげで大きな機能を実装することができました。
また、OSSへの恩返しじゃないですけど新しくpdfmeとして4つのスポンサーを開始しました。
機能実装したものをいくつか紹介させていただきます。
ヘッダー、フッターの追加
ページブレイクに影響されず、全てのページの同じ位置に表示される staticSchema
をbasePdf
のプロパティに追加しました。まだWYSIWYGエディタから変更できる機能では無いので今後対応していきます。
エクスプレッション機能の追加
プレースホルダーの中のJSを評価する仕組みを追加しました。プレースホルダー内では他の入力にアクセスできるので、上記の画像のように小計と税率を利用して消費税を算出することができます。
セキュリティを犠牲にせずにJSを安全に評価するために acorn を使ってビルドインオブジェクトを制限するなどの実装を行なっています。
Lucide iconsを使う
pdfme内で使うアイコンをLucideのアイコンに統一しました。WYSIWYGエディタのパネル内や、スキーマのIconで使わせてもらっておりますがこのプロジェクトの品質、スタンスに共感して応援したかったのでスポンサーになりました。ちゃっかりロゴもスポンサーとしてREADMEに乗せていただきました。
簡単にLucide iconsを説明させてもらうと、
Lucide iconsは、Feather Iconsの開発が停滞し、数多くのイシューやPRが放置されたことへの不満から派生したプロジェクトで、元のシンプルなデザインを維持しつつ、1,500以上の豊富なアイコンを提供し、活発なコミュニティによるメンテナンスや改善が行われています。
Feather Icons(287アイコン)よりも多くのアイコンを持ち、公式ライブラリや主要ツールとの統合が充実しているため、より柔軟かつ実用的です。
基本的に欲しいものは全て用意されており、スキーマを追加する際もLucide iconsがあるおかげでアイコンの準備に時間を浪費する必要がなく、本当に助かっています。
チェックチェックボックス、ラジオグループスキーマの追加
Doc: https://pdfme.com/docs/supported-features#radio-button-radiogroup--check-box-checkbox
フォームでよく使われる要素を追加しました。チェックボックス、ラジオボタンのレンダリングはSVGを使って行なっておりここでもLucide iconsが活躍しました。
今月のPR全体:
- Replace 'top' alignment icon with 'AlignStartHorizontal' in AlignWidget
- fix preprocessing
- alwasy include text render in preprocessing
- Update Readme and docs
- Replace ant design icons to lucide icons 546
- Automatically replace PDFME_VERSION with the latest Git tag during the build process
- Enable the showHead setting of the table to be modified by the designer
- Fix getDynamicHeightsForTable
- Add radio checkbox, radio group schemas
- Fix centering of canvas with respect to left sidebar
- Enable placement of headers and footers in fixed positions & Use template engine
- fix import for index.js to support esm without importing errors
来月やること
今月対応した
- ヘッダー、フッターの追加
- エクスプレッション機能の追加
に対する追加の修正として下記を対応したいと思っています。
対応したい機能:
-
Enable expressions for specific columns in the table #636
- 下記の画像のようにTotalをQuantityとUnit Priceから求められるようにする。
現時点で他のスキーマの値をもとにスキーマの値を算出するのはできるがテーブルスキーマ内で計算できるようにすることが目的。これは現実的なユースケースがすぐにイメージできるので対応したい。
- 下記の画像のようにTotalをQuantityとUnit Priceから求められるようにする。
-
Make the staticSchema and padding of BasePdf configurable by the designer #634
- 現状、
staticSchema
はWYSIWYGエディターから変更ができないデータなのでそれをWYSIWYGエディターで変更できるようにしたい。良いUI/UXがまだ思いついていないがこれを対応しないと固定したスキーマの修正はJSONデータを触らないといけないので頑張って対応しましょう。
- 現状、
これらを対応することで初めて ヘッダー、フッターとエクスプレッションの機能が本当に使いやすいものになると思っています。
割と機能的な部分で色々と実装できた1ヶ月だった。実装した機能はまだ完璧では無いがそれを対応していく来月になりそうだ。
クラウド版の https://app.pdfme.com/ に関しても少しづつ契約が入ってきた。
マーケティング的な部分はまだまだやりたいことはあるが、とりあえず今見えているpdfmeの機能をしっかりと実装してから次に進もうと思っている。
Discussion