Strictly speaking, one would
render a JSF View as PDF using an alternative renderer instead of the default HTML renderer.
However, it's more likely that like most people you don't
really want to "export the JSF page to PDF", you want to generate a downloadable document in PDF form for viewing, printing and/or saving on the client's machine. Which is entirely different.
And you probably don't want the PDF to literally resemble the screen display, you probably want to construct the PDF to look better as a printed document.
If you literally wanted the screen display in PDF form, Linux (and probably Mac) users can simply use their browser's "Print as PDF" printer option. I think that this MIGHT be available in newer versions of Windows, as well, but if not, there are 3d-party printer drivers that can do the job.
However, if you want to generate a printer-friendly PDF document, don't do it in JSF. Write a standard (non-JSF)
servlet and use one of the available PDF rendering libraries to render the servlet output stream as a PDF. Pass any data you need to
exchange between JSF and the servlet in session- or application-scope objects.
JSF wasn't intended to be a do-everything framework, and PDF's are one of the things that it wasn't intended to do.