Using JSF to download a PDF is like using a screwdriver to hammer nails. It doesn't work very well.
JSF is an HTML form-assistive technology and it handles HTML forms very well indeed. But for non-HTML data such as spreadsheets, images, XML files and PDF's, you should use a non-JSF solution. JSF is not a "Master Control Program" that has to be used to handle every URL request sent to a web application. For non-HTML output, use a plain old servlet or JSP.
An IDE is no substitute for an Intelligent Developer.