Php 获取MySQL列的宽度?

Php 获取MySQL列的宽度?,php,pdf,text,width,Php,Pdf,Text,Width,我想知道我是否能够以某种方式将一个列标题文本表单MySQL转换为实际宽度大小的像素。我试图从数据库生成一个PDF,我希望它自动调整列宽。因为我将在许多表中使用它,所以宽度必须不同,所以我应该能够看到这样的内容:“此列的标题称为CompanyID,所以它的宽度应该为40”。我能做到这样吗?我可以将文本字符长度转换为实际宽度吗 谢谢。我不确定这是否可行。我想最好的折衷办法是为一个字符选择一个任意宽度,然后将其乘以mysql字段名的字符串长度。您需要有某种方法来计算将在PDF中使用的字体度量-您使用的

我想知道我是否能够以某种方式将一个列标题文本表单MySQL转换为实际宽度大小的像素。我试图从数据库生成一个PDF,我希望它自动调整列宽。因为我将在许多表中使用它,所以宽度必须不同,所以我应该能够看到这样的内容:“此列的标题称为CompanyID,所以它的宽度应该为40”。我能做到这样吗?我可以将文本字符长度转换为实际宽度吗


谢谢。

我不确定这是否可行。我想最好的折衷办法是为一个字符选择一个任意宽度,然后将其乘以mysql字段名的字符串长度。

您需要有某种方法来计算将在PDF中使用的字体度量-您使用的是哪个PDF生成库?

如果我没有误解,这完全取决于您使用的字体,而这与存储在MySQL中的数据无关。您当然可以找到一种近似的方法,但这在很大程度上取决于您使用的字体的特性。例如,字体是单间距的吗?如果不是,一个名为“llllll”的列将比一个名为“MMMMMM”的列要薄得多,即使它们的字符数相同。

尽管我强烈建议使用一种字符宽度相同的字体(可能是Courier New),然后将字符串长度乘以您确定的一个字符的宽度,您可以使用一些服务器端代码来完成这项工作。从现在起,我将用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]
?>

您需要一个函数来计算字符串的宽度,给定(如Mike Houston所说)它将被呈现的字体(字体、大小等)。它与MySQL无关,与打印/呈现文本有关,所以请查看您的PDF库。或者,可能是操作系统的打印/图形库。

FPDF碰巧有一种方法可以预测字符串的宽度。

这与SQL无关-这是一个以像素为单位确定文本大小的问题。有关类似问题,请参阅。您试图用哪种语言执行上述任务?我想是吧?谢谢你的回复。我正在使用FPDF库。字体设置如下:$this->SetFont('Arial','',12);我需要想出一个简单的方法来做这件事。我会根据大型数据集生成PDF。所以我不想为这个转换花费太多的资源…这个问题用“php”这个词来标记,mate…:)正如我所建议的,PHP的imagettfbbox()应该可以为您提供帮助;它返回文本周围虚构“框”的坐标。从这一点,可以提取宽度。