Caramba, acho que você faltou à aula de como funciona uma aplicação web, né?
Lembre-se, o que o cliente vê, independente de qual tecnologia você tenha no backend, é, apenas, HTML + JS + CSS.
Logo, você teria que ter implementado algo para que, quando clicasse no botão, o BROWSER do cliente baixasse o relatório, armazenasse em memória ou em um local SEM QUE O CLIENTE VEJA, execute um script para identificar as impressoras instaladas e enviar o comando de impressão do arquivo para uma delas (a padrão do sistema? Pode ser).
O que ocorre é que, quando você clica em algo na página de tua aplicação JSF e esse algo tem uma ação associada, essa ação será executada NO SERVIDOR e não na máquina do cliente (salvo se há um javascript para isso).
E, óbvio que na IDE vai funcionar, ela está rodando em tua máquina.
Logo, não invente. Crie um meio do usuário baixar o arquivo, salvar em PDF e ele mesmo imprimir.
Se insistir nessa ideia, existem alguma iniciativas em JS para tentar uma solução diferente, mas, nunca usei, então não posso sugerir nada neste sentido.
Prezados desculpe entrar no tópico apenas para um comentário eu trabalho com Web e hoje sem applet´s tem que partir para JNLP e JWS o lance aqui é o Certificado que custa uns 600,00 fora dominar o que tem que ser feito
Adquirir uma API de Impressão direta hoje custa uns 400,00
Eu tô na luta primeiro para entender o que tenho que fazer, como implementar mais sei que vou esbarrar no Certificado.