¡Caminando hacia el éxito!

Aprende en Comunidad

Avalados por :

¡Acceso SAP S/4HANA desde $100!

Acceso a SAP

Como exportar um relatório do Crystal Report para PDF com Java sem servidor

  • Creado 01/03/2024
  • Modificado 01/03/2024
  • 87 Vistas
0
Cargando...

Pergunta: Posso exportar um relatório do Crystal Report para PDF usando um programa independente em Java (sem usar um aplicativo web ou um servidor)?

Requisito: Eu quero exportar um relatório do Crystal Report para um arquivo PDF usando um aplicativo independente em Java. Consigo fazer isso usando o SAP Crystal Report 2013 no meu desktop. Para Java, baixei a biblioteca crjava-runtime_12.2.220 e estou usando o seguinte código.

        
            import com.crystaldecisions.reports.sdk.*;
            import com.crystaldecisions.sdk.occa.report.lib.*;
            import com.crystaldecisions.sdk.occa.report.exportoptions.*;
            //Importações do Java

            import java.io.*;
            public class JRCExportReport {
            static final String REPORT_NAME = "C:/abc.rpt";
            static final String EXPORT_FILE = "C:/abc.pdf";

            public static void main(String[] args) {
            try {
            //Abrir relatório
            ReportClientDocument reportClientDoc = new ReportClientDocument();
            reportClientDoc.open(REPORT_NAME, ReportExportFormat._PDF);

            //NOTA: Se forem necessários parâmetros ou credenciais de login do banco de dados, eles devem ser configurados antes.
            //Chamando o método export do PrintOutputController.

            //Exportar relatório e obter um fluxo de entrada que pode ser gravado no disco.
            //Consulte o Guia do desenvolvedor do componente de relatórios Java para obter mais informações sobre as enumerações de formatos de exportação possíveis com o JRC.
            ByteArrayInputStream byteArrayInputStream = (ByteArrayInputStream) reportClientDoc.getPrintOutputController().export(ReportExportFormat.PDF);

            //Fechar relatório.
            reportClientDoc.close();

            //Usar as bibliotecas de E/S do Java para escrever o conteúdo exportado no sistema de arquivos.
            byte byteArray[] = new byte[byteArrayInputStream.available()];
            //Criar um novo arquivo que conterá o resultado exportado.
            File file = new File(EXPORT_FILE);
            FileOutputStream fileOutputStream = new FileOutputStream(file);
            ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(byteArrayInputStream.available());
            int x = byteArrayInputStream.read(byteArray, 0, byteArrayInputStream.available());
            byteArrayOutputStream.write(byteArray, 0, x);
            byteArrayOutputStream.writeTo(fileOutputStream);
            //Fechar fluxos.
            byteArrayInputStream.close();
            byteArrayOutputStream.close();
            fileOutputStream.close();

            System.out.println("Relatório exportado com sucesso para " + EXPORT_FILE);

            } catch (ReportSDKException ex) {

            ex.printStackTrace();

            } catch (Exception ex) {

            ex.printStackTrace();

            }
            }
            }
        
    
Obtendo a seguinte exceção na linha (reportClientDoc.open(REPORT_NAME, ReportExportFormat._PDF)): log4j: AVISO Não foram encontrados anexos para o logger (com.crystaldecisions.reports.common.engine.config). log4j: AVISO Por favor, inicialize corretamente o sistema log4j. com.crystaldecisions.sdk.occa.report.lib.ReportSDKException: Índice: 0, Tamanho: 0 ---- Código de erro: -2147467259 Nome do código de erro: falha em com.businessobjects.reports.sdk.JRCCommunicationAdapter.(SourceFile:285) em com.businessobjects.sdk.erom.jrc.a.(SourceFile:43) em com.businessobjects.sdk.erom.jrc.ReportAgentFactory.createAgent(SourceFile:46) em com.crystaldecisions.proxy.remoteagent.RemoteAgent$a.(SourceFile:703) em com.crystaldecisions.proxy.remoteagent.RemoteAgent.a(SourceFile:662) em com.crystaldecisions.proxy.remoteagent.RemoteAgent.a(SourceFile:632) em com.crystaldecisions.sdk.occa.report.application.ClientDocument.if(SourceFile:504) em com.crystaldecisions.sdk.occa.report.application.ClientDocument.open(SourceFile:669) em com.crystaldecisions.reports.sdk.ReportClientDocument.open(SourceFile:80) em JRCExportReport.main(JRCExportReport.java:33) Causado por: java.lang.IndexOutOfBoundsException: Índice: 0, Tamanho: 0 em java.util.ArrayList.rangeCheck(Unknown Source) em java.util.ArrayList.get(Unknown Source) em com.crystaldecisions12.reports.dataengine.h.h.if(SourceFile:2219) em com.crystaldecisions12.reports.dataengine.h.h.i(SourceFile:255) em com.crystaldecisions12.reports.dataengine.h.h.a(SourceFile:2065) em com.crystaldecisions12.reports.dataengine.h.h.try(SourceFile:1878) em com.crystaldecisions12.reports.reportdefinition.ReportDocument.a(SourceFile:2378) em com.crystaldecisions12.reports.reportdefinition.ReportDocument.a(SourceFile:1716) em com.crystaldecisions12.reports.common.Document.a(SourceFile:689) em com.crystaldecisions12.reports.common.Document.do(SourceFile:651) em com.crystaldecisions12.reports.reportdefinition.ReportDocument.a(SourceFile:2325) em com.crystaldecisions12.reports.reportdefinition.ReportDocument.a(SourceFile:1716) em com.crystaldecisions12.reports.common.Document.a(SourceFile:521) em com.crystaldecisions12.reports.common.Document.loadDocument(SourceFile:437) em com.crystaldecisions12.reports.reportdefinition.ReportDocument.loadDocument(SourceFile:1516) em com.crystaldecisions12.reports.reportdefinition.ReportDocument.LoadDocument(SourceFile:1479) em com.businessobjects.reports.reportconverter.v12.c.a(SourceFile:59) em com.businessobjects.reports.reportconverter.v12.V12SaveLoader.a(SourceFile:159) em com.businessobjects.reports.loader.ReportLoader.a(SourceFile:205) em com.businessobjects.reports.sdk.JRCReportLoader.a(SourceFile:137) em com.businessobjects.reports.sdk.JRCReportLoader.a(SourceFile:76) em com.businessobjects.reports.sdk.requesthandler.ReportDocumentRequestHandler.a(SourceFile:137) em com.businessobjects.reports.sdk.JRCCommunicationAdapter.(SourceFile:228) ... 9 mais
Pedro Pascal
Se unió el 07/03/2018
Pinterest
Telegram
Linkedin
Whatsapp

4 Respuestas

0
Cargando...

danielleevandenbosch - Na verdade, esta ainda é uma pergunta em aberto para mim.

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Estou enfrentando o mesmo problema exato. Você conseguiu resolvê-lo alguma vez?

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019

contacto@primeconsultor.com

+1 (305) 285-8622

© 2025 Todos los derechos reservados.

Desarrollado por Prime Consultor

¡Hola! Soy Diana, asesora académica de Prime Consultor, indícame en que Academia SAP estás interesado, saludos!
Hola ¿Buscas Academias SAP?