获取MySQL列宽度?

时间:2009-01-28 17:57:03

标签: php pdf text width

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

感谢。

6 个答案:

答案 0 :(得分:3)

FPDF碰巧有GetStringWidth()方法来预测字符串的宽度。

答案 1 :(得分:2)

您需要有一些方法来计算将在PDF中使用的字体指标 - 您正在使用哪个PDF生成库?

答案 2 :(得分:2)

虽然我强烈建议使用字符宽度相等的字体(也许是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]
?>

因此,每当您需要推导出字符串的宽度时,只需调用此函数并使用结果数组的索引2处的元素来获取所需的信息。希望我帮助过。

答案 3 :(得分:0)

我不确定这是可能的。我认为最好的折衷方案是为一个字符选择一个任意宽度,然后将它乘以mysql字段名称的字符串长度。

答案 4 :(得分:0)

如果我没有误解,这完全取决于您使用的字体,而且与MySQL中存储的数据无关。您当然可以想出一种近似它的方法,但它在很大程度上取决于您正在使用的字体的功能。例如,字体是等宽的吗?如果没有,名为“llllll”的列将比名为“MMMMMM”的列薄得多,即使它们的字符数相同。

答案 5 :(得分:0)

你需要一个能够计算字符串宽度的函数,给出(如Mike Houston所说)它将呈现的字体(面,大小等)。它与MySQL无关,而且一切都可以做有了打印/渲染文本,请查看PDF库。或者,可能是您的操作系统的打印/图形库。