Duvida JasperReports com java web

Bom dia, criei alguns relatórios e queria por para download na parte web do java, queria saber como converto em pdf e como passo o pdf para download na pagina web ?
Sem%20t%C3%ADtulo

Tentou isso?

ProdutosBean

public void imprimir() {
		try {
			String caminho = Faces.getRealPath("/reports/Produtos.jasper");

			Map<String, Object> parametros = new HashMap<>();

			java.sql.Connection conexao = HibernateUtil.getConexao();

			JasperPrint relatorio = JasperFillManager.fillReport(caminho, parametros, conexao);
			
			JasperPrintManager.printReport(relatorio, true);
		} catch (JRException erro) {
			Messages.addGlobalError("Ocorreu um erro ao tentar gerar o relatório");
			erro.printStackTrace();
		}
	}

Relatório.xhtml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.org/ui"
template="/templates/template.xhtml"
>


<ui:define name="conteudo">
<h:outputLabel>
<p:commandButton icon="ui-icon-print" actionListener="#{MBProdutos.imprimir}" />
</h:outputLabel>
</ui:define>
<body>

</body>
</ui:composition>

Mas quando clico no icone não acontece nada

Cara, você pegou algum tutorial para gerar relatórios desktop e não web.
É só procurar por jsf + jasperreports e você terá várias opções diferentes.

O jasper print deve estar imprimindo vários relatórios no teu servidor.