If reading this I then understanding, that you can set the stdin to be piped to the command as parameter to a placeholder "-"
like:
cat <<EOF | printf - hello new line EOF
But it only prints "%"?