Pergunta

Eu queria saber se eu posso de alguma forma converter um cabeçalho da coluna forma de texto MySQL em actial tamanho pixels de largura. Eu estou tentando gerar um PDF a partir do banco de dados e eu quero-o para ajustar automaticamente a largura das colunas. Como eu vou usá-lo para muitas tabelas, a largura deve ser diferente, então eu deveria ser capaz de vê-lo como: "O cabeçalho para esta coluna é chamado CompanyID por isso deve ter a largura de 40". Posso conseguir algo assim? Posso converter caracteres de texto comprimento para largura real?

Graças.

Foi útil?

Solução

FPDF acontece de ter um GetStringWidth () método que prevê a largura de uma cadeia.

Outras dicas

Você precisa ter alguma forma de calcular as métricas de fonte que serão utilizados no PDF - qual biblioteca de geração de PDF que você está usando

Embora eu recomendo fortemente usando uma fonte cujas personagens são todos a mesma largura (Courier New, talvez) e depois é só multiplicar o comprimento da corda pela largura a determinar um personagem para ter, você poderia usar um pouco de código do lado do servidor para fazer o truque. Eu vou estar falando em PHP daqui em diante. :)

Assming você tem acesso à biblioteca GD, você pode usar o imagettfbbox () função para retornar as coordenadas da caixa delimitadora da corda; Segue-se um exemplo:

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

Assim, sempre que você precisa para deduzir a largura de uma corda, simplesmente chamar essa função e usar o elemento no índice 2 da matriz resultante para obter as informações que você precisa. Espero ter ajudado.

Eu não tenho certeza que isso é possível. Eu imagino que o melhor compromisso seria para selecionar uma largura arbitrária para um personagem, em seguida, multiplicá-lo pelo comprimento da corda do nome do campo mysql.

Se eu não estou mal-entendido, isso é totalmente dependente da fonte que você está usando, e que não tem nada a ver com os dados armazenados no MySQL. Você certamente poderia vir acima com uma maneira de aproximá-la, mas depende muito características da fonte que você está usando. Por exemplo, é a fonte monoespaçada? Se não, uma coluna chamada "llllll" vai ser muito mais fino do que um chamado "MMMMMM", mesmo que eles são o mesmo número de caracteres.

Você precisa de uma função que irá calcular a largura de uma corda, dada (como diz Mike Houston) a fonte (face, tamanho, etc) que ele vai ser processado em. Não tem nada a ver com o MySQL, e tudo a ver com a impressão / processamento de texto, assim que olhar para a sua biblioteca PDF. Ou, eventualmente, do seu sistema operacional biblioteca impressão / gráficos.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top