getting the data in some format

HI i am writing a shell script to generate some files having data in some format.
for this i am using
awk -F":" '{printf("%-20s:%-20s:%-20s:%-20s:%-15s:%-3s:%-19s:%-2s:%-20s:%-15s:%-2s\n", $1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11)}' $DIALPBIN/temp1.txt > ${DIALPBIN}/temp2.txt

this helps in generating the data in correct format. but if some fields are greater than the mentioned field lenght. it doesn't truncate the data. instead the whole data ia written and goes beyond the depicted length.

could you please help so that the data do not go beyond the mentioned length and automatically gets truncated:confused:

jb>printf "%-5s\n" "12345678"
12345678
jb>printf "%-5.5s\n" "12345678"
12345
jb>