Pregunta

Me preguntaba si de alguna manera puedo convertir un texto de encabezado de columna de MySQL en píxeles de tamaño de ancho actial. Estoy tratando de generar un PDF a partir de la base de datos y quiero que ajuste automáticamente el ancho de las columnas. Como lo usaré para muchas tablas, el ancho debe ser diferente, por lo que debería poder verlo como: & Quot; El encabezado de esta columna se llama CompanyID, por lo que debe tener un ancho de 40 & Quot ;. ¿Puedo lograr algo como esto? ¿Puedo convertir la longitud de los caracteres de texto al ancho real?

Gracias.

¿Fue útil?

Solución

FPDF tiene un GetStringWidth () método que predice el ancho de una cadena.

Otros consejos

Necesita tener alguna forma de calcular las métricas de fuente que se utilizarán en el PDF: ¿qué biblioteca de generación de PDF está utilizando?

Aunque recomiendo encarecidamente utilizar una fuente cuyos caracteres sean todos del mismo ancho (Courier New, quizás) y luego simplemente multiplicando la longitud de la cadena por el ancho que determine que tiene un carácter, podría use un poco de código del lado del servidor para hacer el truco. Hablaré en PHP a partir de ahora. :)

Suponiendo que tiene acceso a la biblioteca GD, puede usar la función imagettfbbox () para devolver las coordenadas del cuadro delimitador de la cadena; El siguiente es un ejemplo:

<?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]
?>

Entonces, cada vez que necesite deducir el ancho de una cadena, simplemente llame a esta función y use el elemento en el índice 2 de la matriz resultante para obtener la información que necesita. Espero haber ayudado.

No estoy seguro de que sea posible. Me imagino que el mejor compromiso sería seleccionar un ancho arbitrario para un carácter y luego multiplicarlo por la longitud de la cadena del nombre del campo mysql.

Si no estoy malentendido, esto depende completamente de la fuente que está utilizando, y eso no tiene nada que ver con los datos almacenados en MySQL. Ciertamente, podría encontrar una forma de aproximarlo, pero depende en gran medida de las características de la fuente que esté utilizando. Por ejemplo, ¿la fuente es monoespaciada? Si no, una columna llamada & Quot; llllll & Quot; va a ser mucho más delgado que uno llamado " MMMMMM " ;, aunque tengan el mismo número de caracteres.

Necesita una función que calcule el ancho de una cadena, dada (como dice Mike Houston) la fuente (cara, tamaño, etc.) en la que se representará. No tiene nada que ver con MySQL, y todo lo que tiene que ver con impresión / representación de texto, así que busque en su biblioteca de PDF. O, posiblemente, la biblioteca de impresión / gráficos de su sistema operativo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top