MySQLの列ヘッダーテキストを実際の幅サイズのピクセルに何らかの形で変換できるかどうか疑問に思っていました。データベースから PDF を生成しようとしていますが、列幅を自動的に調整したいと考えています。多くのテーブルに使用するため、幅は異なる必要があるため、「この列のヘッダーは CompanyID と呼ばれるため、幅は 40 にする必要があります」のように表示できるはずです。このようなことを達成できますか?テキスト文字の長さを実際の幅に変換できますか?
ありがとう。
FPDF には、文字列の幅を予測するGetStringWidth()メソッドがあります。
文字がすべて同じ幅のフォント(おそらくCourier New)を使用し、文字列の長さに1つの文字を決定した幅を掛けることを強くお勧めしますが、サーバー側のコードを少し使用して、トリックを行います。これからはPHPで話します。:)
GDライブラリにアクセスできる場合は、imagettfbbox()関数を使用して、文字列のバウンディングボックスの座標を返すことができます。次に例を示します。
<?php
$size = 15;
$angle = 0;
$path = 'name_of_font.ttf';
$bounding = imagettfbbox($size, $angle, $path, "This is some text.");
// $bounding is now an array of values that contain
// information regarding the invisible "box" around
// the text; the only element you're really interested
// in, though, the one that will tell you the width of
// the text, is $bounding[2]
?>
したがって、文字列の幅を推測する必要があるときはいつでも、この関数を呼び出し、結果の配列のインデックス2にある要素を使用して、必要な情報を取得します。私が助けてくれたことを願っています。
PDF で使用されるフォント メトリックを計算する何らかの方法が必要です。どの PDF 生成ライブラリを使用していますか?
それが可能かどうかはわかりません。最善の妥協点は、文字の任意の幅を選択してから、mysql フィールド名の文字列の長さを掛けることだと思います。
誤解していなければ、これは使用しているフォントに完全に依存しており、MySQL に保存されているデータとは何の関係もありません。おおよその方法を考え出すことはできますが、使用しているフォントの機能に大きく依存します。たとえば、フォントは等幅ですか? そうでない場合、「llllll」という名前の列は、同じ文字数であっても、「MMMMMM」という名前の列よりもはるかに薄くなります。
(マイク・ヒューストンが言うように) 文字列がレンダリングされるフォント (書体、サイズなど) を指定して、文字列の幅を計算する関数が必要です。テキストをレンダリングするため、PDF ライブラリを参照してください。または、おそらく、オペレーティング システムの印刷/グラフィック ライブラリです。