If you're trying to get a PDF straight from a
JSF view, you're asking for trouble. JSF is expecting to output HTML. All you'll accomplish if you attempt to override the rendering process like that is frustration.
A more workable approach is to use a
servlet or (non-JSF)
JSP to render the PDF in the same way you would in a non-JSF application. Then put a URL reference to this servlet/JSP on your JSF view definition.
JSF isn't an exclusive platform. You can (and should) mix JSF and non-JSF request handlers when it makes sense to do so.
The secret of how to be miserable is to constantly expect things are going to happen the way that they are "supposed" to happen.
You can have faith, which carries the understanding that you may be disappointed. Then there's being a willfully-blind idiot, which virtually guarantees it.