I don't think there is any reason at all you couldn't make a PDF file served that parses velocity; I've done it with csvs and, well, jpegs (don't ask).
I'm pretty sure I did this at least once before, but I can't find the code easily. I will look.
It would be exactly the same way you mix/serve html/velocity. Just need to get the headers and formats right. (blank template):
#set ($puller=$dotcontent.pull("+structureName:building",0,"modDate desc"))
#foreach($con in $puller)
But having a nice print.css should obviate this method! This isn't really a code issue.