ソフトウェア開発者の日常

こだわりなく書きたいことを書いていきます。

PHP:TCPDFを使ってHTML形式のデータからPDFを生成する際に追加した機能

Webの画面から、HTMLの<sup>や<sub>などのタグを含んだ文章を入力し、タグを反映した状態でPDFにしたかったので、TCPDFを使ってHTML形式でPDFを作成しました。

Webの画面上、不等式の大なりの「>」と小なりの「<」は半角を使わず、大なりは全角の「>」を使い、小なりは全角の「<」を使うように書いてあっても、入力する側はあまり意識せず、半角で文章を入力してきます。
入力された結果、文章をPDFに出力すると、文章がまるまる出力されなかったり、途中から出力されたりと、きちんと読めるPDFになりません。

半角の大なりと小なりを全角に置き換える

データを調べて直そうかと思いましたが、1件や2件ではなかったので、プログラムで対処することにしました。

単純に半角を全角に直すと、タグとして正しく入力されてる半角の大なりと小なりも全角になってしまいます。

プログラムでの処理方法

考えた結果、

  1. 利用可能とWebの画面上に記載している<sup>や<sub>を全角に置き換える
    例:A<sup>2</sup>は3<xである。→A<sup>2</sup>は3<xである。
  2. 大なりの「>」と小なりの「<」を全角に置き換える
    例:A<sup>2</sup>は3<xである。→A<sup>2</sup>は3<xである。
  3. 全角にした<sup>や<sub>を半角に置き換える
    例:A<sup>2</sup>は3<xである。→A<sup>2</sup>は3<xである。

という処理にしました。

処理を組み込んだ結果

上記の処理をした文章をPDFに出力すると、きちんと読めるPDFが作成されました。

まとめ

システムとしての処理の最後の出力で対応しました。
本来は入力時に対応すべき内容だと思うので、Webの画面上で上記の処理をしてからデータベースに格納するように修正していきたいです。