Получить ширину столбцов MySQL? - PullRequest
0 голосов
/ 28 января 2009

Мне было интересно, смогу ли я каким-то образом преобразовать текстовую форму заголовка столбца MySQL в пиксели с реальной шириной. Я пытаюсь создать PDF из базы данных, и я хочу, чтобы он автоматически настраивал ширину столбцов. Поскольку я буду использовать его для многих таблиц, ширина должна отличаться, поэтому я должен видеть это следующим образом: «Заголовок для этого столбца называется CompanyID, поэтому он должен иметь ширину 40». Могу ли я добиться чего-то подобного? Можно ли преобразовать длину текстовых символов в фактическую ширину?

Спасибо.

Ответы [ 6 ]

3 голосов
/ 29 января 2009

FPDF имеет метод GetStringWidth () , который предсказывает ширину строки.

2 голосов
/ 28 января 2009

Хотя я настоятельно рекомендую использовать шрифт, символы которого имеют одинаковую ширину (возможно, 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 результирующего массива, чтобы получить необходимую информацию. Надеюсь, я помог.

2 голосов
/ 28 января 2009

У вас должен быть какой-то способ расчета метрик шрифта, который будет использоваться в PDF - какую библиотеку создания PDF вы используете?

0 голосов
/ 28 января 2009

Вам нужна функция, которая будет вычислять ширину строки, учитывая (как говорит Майк Хьюстон) шрифт (лицо, размер и т. Д.), В котором она будет отображаться. Это не имеет ничего общего с MySQL, и все, что нужно сделать с печатью / рендерингом текста, так что посмотрите в свою библиотеку PDF. Или, возможно, библиотека печати / графики вашей операционной системы.

0 голосов
/ 28 января 2009

Если я не ошибаюсь, это полностью зависит от шрифта, который вы используете, и это не имеет никакого отношения к данным, хранящимся в MySQL. Вы, конечно, можете придумать способ приблизить его, но это сильно зависит от особенностей используемого вами шрифта. Например, моноширинный ли шрифт? В противном случае столбец с именем «llllll» будет намного тоньше столбца с именем «ММММММ», даже если они имеют одинаковое количество символов.

0 голосов
/ 28 января 2009

Я не уверен, что это возможно. Я думаю, что лучшим компромиссом было бы выбрать произвольную ширину для символа, а затем умножить его на длину строки имени поля mysql.

...