Upgrade to Pro — share decks privately, control downloads, hide ads and more …

なぜブラウザで帳票を生成したいのか どのようにブラウザで帳票を生成するのか

 なぜブラウザで帳票を生成したいのか どのようにブラウザで帳票を生成するのか

JSConf JP 2025 デンキヤギセッションでのスライドです。

Avatar for yagisan-reports

yagisan-reports

November 17, 2025
Tweet

More Decks by yagisan-reports

Other Decks in Technology

Transcript

  1. 2

  2. terurouと帳票システム • [2005] セミナー受講システム : 修了証印刷 • PHP4.3の時代にFPDFをフォークして、縦書きサポート+高速化 • [2011]

    物流 倉庫管理システム • wkhtmltopdf (CSS組版) ※今ならheadless Chrome • [2014] 販売管理システム • kintone +請求書SaaS(Misoca) • [2016] 金融系システム • JasperReports など 3
  3. 帳票が登場するビジネス領域の一例 • 経理 • 請求書、稟議書、決算、… • 物流 • 配送指示書、宛名ラベル、… •

    製造業(FA) • 生産指示書、検査報告書、… • 監督省庁への届出・申告 • 医療、介護、建築、土木、 不動産、金融、… • 公共・行政 • 教育 • その他一般業務 など 7
  4. ブラウザ上で動作するPDFライブラリ • JavaScript/TypeScript実装のOSS • pdfme ※この中ではかなり高機能 • react-pdf • pdf-lib

    • PDFKit など • C/C++やRustなどのWASMで使えるライブラリ • 有償のプロプラエタリ製品もいくつかある 22 数年前と比べると、 選択肢が増えてきた
  5. 日本語帳票エンジンに求められる要件 • 日本語サポート • 日本語フォント • 異体字(IVS) • 縦書きテキスト •

    高レベルなレイアウトシステム • 動的明細(動的テーブル) • 自動改ページ 24
  6. pdf-libでの帳票レイアウト • pdf-libでは低レベルAPIしか提供されていない • addPage(), drawText(), drawLine() など • 「この座標に」「文字を書く」「線を引く」みたいな感じ

    • 低レベルAPIだけでは、請求書を作るだけでも大変 • 単純に実装・テストの工数がかかる • 誰でもできるわけではないので、仕事が分散できない • 例えば1年後に微修正がきたとしても、自分でも覚えてない… 29