java call crystal reports Export to pdf

最近项目需要,使用JAVA调用crystalreport生成PDF。

花了很多时间,最后才发现,原来旧版本的jar需要升级,才能调用到那些方法,现发出来跟大家分享一下~~

首先,需要下载CR for eclipse 2.0(这个很重要,不然很多方法找不到,找到了还要你连server)

下载完后。

1, 在eclipse里建一个java项目

2, 把下载的crystal reports的jar导到项目里, 还需要把数据库连接的包也导到项目里(例如:crystal report里用的是JDBC,就导入JDBC的连接包)。

3, 写一个类: 

import iExpOption.IExpOptionFunction;


import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.FileOutputStream;
import java.io.Serializable;
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
import java.util.Iterator;
import java.util.Map;

import com.crystaldecisions.sdk.occa.report.application.ReportClientDocument;
import com.crystaldecisions.sdk.occa.report.exportoptions.ReportExportFormat;
import com.crystaldecisions.sdk.occa.report.lib.ReportSDKException;

public class ExpOptionFunction
{
 public ByteArrayInputStream returnPDFStream(String rptPath, Map param,
   String username, String password) throws RemoteException{
  // TODO Auto-generated method stub
  

  try {
   ReportClientDocument repClientDoc=new ReportClientDocument();
   repClientDoc.setReportAppServer(ReportClientDocument.inprocConnectionString);
   repClientDoc.open(rptPath, ReportExportFormat._PDF);
   repClientDoc.getDatabaseController().logon(username, password);
   if(param!=null)
   {
    Iterator it=param.keySet().iterator();
    while(it.hasNext())
    {
     String key=(String)it.next();
     Object value=param.get(key);
     repClientDoc.getDataDefController().getParameterFieldController().setCurrentValue("", key,value);
    }
   }  
   ByteArrayInputStream input = (ByteArrayInputStream) repClientDoc.getPrintOutputController().export(ReportExportFormat.PDF);
   repClientDoc.close();
  } catch (ReportSDKException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  return bais;
  
 }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值