When written like this, it outputs text in blue:
printf "\e[1;34mThis is a blue text.\e[0m"
printf '%-6s' "This is text"
printf '%-6s' "\e[1;34mThis is text\e[0m"
You're mixing the parts together instead of separating them cleanly.
printf '\e[1;34m%-6s\e[m' "This is text"
Basically, put the fixed stuff in the format and the variable stuff in the parameters.