Domanda

Mi chiedevo se posso in qualche modo convertire un testo di intestazione di colonna da MySQL in pixel di dimensioni di larghezza effettiva. Sto cercando di generare un PDF dal database e voglio che aggiorni automaticamente le larghezze delle colonne. Dato che lo userò per molte tabelle, la larghezza deve essere diversa, quindi dovrei essere in grado di vederlo come: & Quot; L'intestazione per questa colonna si chiama CompanyID, quindi dovrebbe avere la larghezza di 40 & Quot ;. Posso ottenere qualcosa del genere? Posso convertire la lunghezza dei caratteri del testo in larghezza effettiva?

Grazie.

È stato utile?

Soluzione

FPDF sembra avere un GetStringWidth () che prevede la larghezza di una stringa.

Altri suggerimenti

Devi avere un modo per calcolare le metriche dei caratteri che verranno utilizzate nel PDF - quale libreria di generazione PDF stai usando?

Anche se raccomanderei caldamente di usare un font i cui caratteri siano tutti della stessa larghezza (Courier New, forse) e quindi semplicemente moltiplicare la lunghezza della stringa per la larghezza che si determina di avere un carattere, potresti usa un po 'di codice lato server per fare il trucco. Parlerò in PHP da qui in poi. :)

Supponendo di avere accesso alla libreria GD, è possibile utilizzare la funzione imagettfbbox () per restituire le coordinate del rettangolo di selezione della stringa; Di seguito è riportato un esempio:

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

Pertanto, ogni volta che è necessario dedurre la larghezza di una stringa, è sufficiente chiamare questa funzione e utilizzare l'elemento all'indice 2 dell'array risultante per ottenere le informazioni necessarie. Spero di averti aiutato.

Non sono sicuro che sia possibile. Immagino che il miglior compromesso sarebbe selezionare una larghezza arbitraria per un personaggio, quindi moltiplicarlo per la lunghezza della stringa del nome del campo mysql.

Se non ho fraintendimenti, questo dipende interamente dal carattere che stai usando e che non ha nulla a che fare con i dati memorizzati in MySQL. Potresti sicuramente trovare un modo per approssimarlo, ma dipende fortemente dalle caratteristiche del font che stai utilizzando. Ad esempio, il carattere è a spaziatura fissa? In caso contrario, una colonna denominata & Quot; llllll & Quot; sarà molto più sottile di quello chiamato " MMMMMM " ;, anche se hanno lo stesso numero di caratteri.

Hai bisogno di una funzione che calcoli la larghezza di una stringa, dato (come dice Mike Houston) il carattere (faccia, dimensione, ecc.) in cui verrà renderizzato. Non ha nulla a che fare con MySQL e tutto ciò che deve fare con la stampa / il rendering del testo, quindi consulta la tua libreria PDF. O, possibilmente, la libreria di stampa / grafica del tuo sistema operativo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top