Experimente estes exemplos:
https://wiki.scn.sap.com/wiki/display/BOBJ/Java+%28Crystal+Reports+for+Eclipse%29+SDK
Avalados por :
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.Experimente estes exemplos:
https://wiki.scn.sap.com/wiki/display/BOBJ/Java+%28Crystal+Reports+for+Eclipse%29+SDK
danielleevandenbosch - Na verdade, esta ainda é uma pergunta em aberto para mim.
Estou enfrentando o mesmo problema exato. Você conseguiu resolvê-lo alguma vez?
contacto@primeconsultor.com
+1 (305) 285-8622
© 2025 Todos los derechos reservados.
Desarrollado por Prime Consultor