PHPのFPDIライブラリでエンコーディングを設定する方法
FPDIライブラリでのエンコーディング設定の基本
FPDIライブラリでPDFのエンコーディングを正しく扱うには、必要な文字セット(アルファベット)を含む新しいフォントを追加します。基本的な手順は以下のコードの通りです。
$pdf->AddFont('DejaVu','','DejaVuSansCondensed.php');
$pdf->SetFont('DejaVu', '', 10, '', false);このように AddFont() で使用したいフォントを登録し、SetFont() でそのフォントを有効化することで、多言語の文字をPDF上に表示できるようになります。
利用可能な主なエンコーディング一覧
FPDF/FPDI系のライブラリでは、標準フォントに対して以下のエンコーディングを使用できます。対象言語に応じて適切なものを選択してください。
Windowsコードページ系
- cp1250(中央ヨーロッパ)
- cp1251(キリル文字)
- cp1252(西ヨーロッパ)
- cp1253(ギリシャ語)
- cp1254(トルコ語)
- cp1255(ヘブライ語)
- cp1257(バルト諸語)
- cp1258(ベトナム語)
- cp874(タイ語)
ISO-8859系
- ISO-8859-1(西ヨーロッパ)
- ISO-8859-2(中央ヨーロッパ)
- ISO-8859-4(バルト諸語)
- ISO-8859-5(キリル文字)
- ISO-8859-7(ギリシャ語)
- ISO-8859-9(トルコ語)
- ISO-8859-11(タイ語)
- ISO-8859-15(西ヨーロッパ)
- ISO-8859-16(中央ヨーロッパ)
KOI8系
- KOI8-R(ロシア語)
- KOI8-U(ウクライナ語)
UTF-8からcp1250への変換例
実際にUTF-8の文字列をcp1250へ変換する例を見てみましょう。iconv() 関数を使うのが一般的です。
$str = iconv('UTF-8', 'cp1250', 'zazółcić gęślą jaźń');なお、mb_convert_encoding() 関数でも同様の変換が可能です。
$str = mb_convert_encoding('zazółcić gęślą jaźń', 'cp1250', 'UTF-8');注意点
ユーザーから入力された文字列がUTF-8エンコーディングである場合、そのままPDFに出力すると文字化けが発生します。出力前に、使用するフォントが対応するエンコーディング(例:cp1250)へ必ず変換してください。これはFPDIだけでなく、TCPDF以外のFPDF系ライブラリ全般に共通する重要なポイントです。
-
【PHP】imagesetpixel()関数で指定座標に単一ピクセルを描画する方法
imagesetpixel()は、PHPのGDライブラリに組み込まれている関数の一つで、指定した座標に単一のピクセルを設定(描画)するために使用されます。構文bool imagesetpixel(resource $image, int $x, int $y, int $color)パラメータimagesetpixel()は、$image・$x・$y・$colorの4つの引数を受け取ります。$image − 操作対象の画像リソースを指定します。imagecreatefromjpeg()やimagecreatetruecolor()などで作成したものを使用します。$x − 描画するピクセルのX座
-
Raspberry Pi OSのセットアップ方法を徹底解説!ImagerとNOOBSの2つの手順
DebianベースのRaspberry Pi OS(旧称:Raspbian)は、Raspberry Piのハードウェアに最適化された公式OSです。すぐに使い始められる便利なソフトウェアが多数同梱されており、初心者から上級者まで、あらゆるユーザーにとって理想的な選択肢となっています。 Raspberry Pi OSのインストールは以前から比較的簡単でしたが、2020年にRaspberry Pi Imagerが登場してからは、さらに手軽になりました。この記事では、Raspberry PiにRaspberry Pi OSをセットアップする方法を、画像付きの手順でわかりやすく解説します。 なお、以下の