[RESOLVIDO] Jasper Reports subreport usando InputStream

Estou tentando montar um relatório e surgiu a necessidade de adicionar um subreport nele, dai como eu estou usando InputStream para imagens pensei em utilizar o mesmo para o subreport, estou tentando passar ele como um parametro:

param.put("subReport", Relatorio.getRelatorioResouceFile("evolucao_grupo_subreport1.jasper"));

No meu relatório eu fiz assim:

<parameter name="subReport" class="java.io.InputStream"/>

<subreport>
	<reportElement isPrintRepeatedValues="false" x="5" y="25" width="325" height="20" isRemoveLineWhenBlank="true" backcolor="#FFCC99" uuid="30a27d2f-5135-4b97-ae59-9827292112d5"/>
	<subreportExpression><![CDATA[$P{subReport}]]></subreportExpression>
</subreport>

Me retorna o seguinte erro:

java.lang.Exception: Erro ao gerar o Pdf do relatório. Error loading object from InputStream.
	at br.com.eduardo.teste.relatorio.Relatorio.relatorioPdf(Relatorio.java:147)
	at br.com.eduardo.teste.webpep.PacienteDocumento.relatorioEvolucaoGrupo(PacienteDocumento.java:600)
	at br.com.eduardo.teste.webservice.rest.PepController.getEvolucaoGrupoPdf(PepController.java:3019)
	at br.com.eduardo.teste.webservice.rest.PepController$$FastClassBySpringCGLIB$$f57130e8.invoke(<generated>)
	at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)

Alguém consegue me ajudar?

Segue esse tutorial e boas

Consegui resolver, vou deixar a solução caso alguém mais passe pelo mesmo problema.

Primeiro alterei o tipo do parâmetro subReport no meu arquivo “.jrxml” para net.sf.jasperreports.engine.JasperReport:

<parameter name="subreportParameter" class="net.sf.jasperreports.engine.JasperReport"/>

Depois na hora de enviar o parâmetro eu estou convertendo para esse tipo:

public static JasperReport loadReport(final String fileName) throws IOException, JRException {
	try(InputStream in = getRelatorioResouceFile(fileName)) {
		return (JasperReport) JRLoader.loadObject(in);
	}
}
param.put("subReport", Relatorio.loadReport("evolucao_grupo_subreport1.jasper"));
1 curtida