To answer your question:
Why are you setting value to blank when null instead of isBlankWhenNull = true?
i started with isBlankWhenNull="true", for avoid the print "null" into field, but
i obtained the same unpleasant effect that i have now.
My solution is manage the value, with string empty, before to be processed by jasper. The problem seems be that the "text field" if it find "string empty", It treats him as NULL and not print the value. The background-color of text field, shows that the element it is not rendered.
Your idea is good, a bit it me bothers duplicate all fields for manage a value that could be print how to received.
Thanks hozawa