Question

Je me demandais si je pouvais d'une manière ou d'une autre convertir un texte d'en-tête de colonne sous forme de MySQL en pixels de taille réelle. J'essaie de générer un fichier PDF à partir de la base de données et je veux qu'il ajuste automatiquement la largeur des colonnes. Comme je vais l'utiliser pour de nombreux tableaux, la largeur doit être différente et je devrais pouvoir le voir ainsi: & "; L'en-tête de cette colonne s'appelle CompanyID et doit donc avoir la largeur 40 &"; Puis-je réaliser quelque chose comme ça? Puis-je convertir la longueur des caractères du texte en largeur réelle?

Merci.

Était-ce utile?

La solution

FPDF utilise une méthode GetStringWidth () pour prédire la largeur d'une chaîne.

Autres conseils

Vous devez avoir un moyen de calculer les métriques de police qui seront utilisées dans le PDF - quelle bibliothèque de génération de PDF utilisez-vous?

Bien que je vous recommande vivement d'utiliser une police dont les caractères ont tous la même largeur (Courier New, peut-être) et de simplement multiplier la longueur de la chaîne par la largeur que vous déterminez pour un caractère, vous pouvez utilisez un peu de code côté serveur pour faire l'affaire. Je parlerai en PHP à partir d'ici. :)

Après avoir accédé à la bibliothèque GD, vous pouvez utiliser la fonction imagettfbbox () pour renvoyer les coordonnées du cadre de sélection de la chaîne; Voici un exemple:

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

Ainsi, chaque fois que vous devez déduire la largeur d'une chaîne, appelez simplement cette fonction et utilisez l'élément à l'index 2 du tableau résultant pour obtenir les informations dont vous avez besoin. J'espère que j'ai aidé.

Je ne suis pas sûr que ce soit possible. J'imagine que le meilleur compromis serait de choisir une largeur arbitraire pour un caractère, puis de la multiplier par la longueur de chaîne du nom du champ mysql.

Si je ne me trompe pas, cela dépend entièrement de la police que vous utilisez et cela n'a rien à voir avec les données stockées dans MySQL. Vous pouvez certainement trouver un moyen de vous en approcher, mais cela dépend fortement des fonctionnalités de la police que vous utilisez. Par exemple, la police est-elle monospace? Si ce n'est pas le cas, une colonne nommée & "; Llllll &"; va être beaucoup plus mince qu'un nommé & "; MMMMMM &" ;, même s'ils ont le même nombre de caractères.

Vous avez besoin d’une fonction qui calculera la largeur d’une chaîne de caractères, en donnant (comme le dit Mike Houston) la police (la face, la taille, etc.) dans laquelle elle sera rendue. avec le texte d'impression / rendu, consultez votre bibliothèque PDF. Ou éventuellement, la bibliothèque d'impression / graphique de votre système d'exploitation.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top