logo资料库

金蝶EAS通过套打模板实现后台生成PDF文件.docx

第1页 / 共4页
第2页 / 共4页
第3页 / 共4页
第4页 / 共4页
资料共4页,全文预览结束
EAS通过套打模板实现后台生成PDF文件
一、文档说明
二、相关代码
1、自定义标准打印DataProvider类
2、具体打印实现代码如下:
EAS 通过套打模板实现后台生成 PDF 文件 一、 文档说明 在 EAS 开发中,如果需要合同调用套打模板自动生成 PDF 进行 档案归档备份,可通过以下步骤进行开发实现; 二、 相关代码 1、自定义标准打印 DataProvider 类 改造说明:DefaultNoteDataProvider 继承了 AbstractPrintDataProvider 这个类,套打会调 用 getData 方法获取需要填充到模板的数据。 将标准代码 DefaultNoteDataProvider 反编译后新建 DefaultDataProvider 类 将此类中的前台查询方法修改为后台查询方法;如图:
源码参考: DefaultDataProvider.txt 2、具体打印实现代码如下: 实际代码: protected void _PDFexport(Context ctx)throws BOSException final Context ctxa = ctx; ArrayList list=new ArrayList(); String sid="4i2S7VVRS+CrNORw1sTB0kpE9J8="; list.add(sid); //输出流 OutputStream outputStream=null; //通过传入的单据 ID 来获取 BOSUuid BOSUuid uuid = BOSUuid.read(sid); //获取类型 BOSObjectType bosobjecttype = uuid.getType(); //根据实体找到默认 query String tableName = entity.getExtendedProperty("defaultF7Query"); String tableName = "com.kingdee.eas.cp.bc.app.BizAccountBillForR1PrintQuery"; IMetaDataPK tdquery = new MetaDataPK(tableName); //query 主数据 DefaultDataProvider provider = new DefaultDataProvider(ctx,list,tdquery); provider.addMetaDataPK("BizAccountBillForR1PrintQuery", // // MetaDataPK("com.kingdee.eas.cp.bc.app.BizAccountBillForR1PrintQuery")); new //各单据模版地址 String tDFileName="/FI/CPBC/bizaccount/accmount2019.r1-print"; try { outputStream=new FileOutputStream("D:"+File.separator+"1.pdf");
} catch (FileNotFoundException e) { e.printStackTrace(); } //远程协议进行 ctx 赋值 WebContextUtil.initRpcConfig(ctxa); String originalAppServerType=System.getProperty("APP_SERVER_TYPE"); try { System.setProperty("APP_SERVER_TYPE", "apusic"); KDNoteWebServerHelper helper =new KDNoteWebServerHelper(); helper.setContextProvider(new IContextProvider(){ public IBizContext getBizContext(Context bosCtx) { IBizContext bizCtx=null; try { bizCtx = KDNoteHelper.makeContext(ctxa); } catch (ConnectException e) { e.printStackTrace(); } return bizCtx; } }); helper.exportPDF(tDFileName, provider, outputStream); } finally { if(originalAppServerType==null) { System.clearProperty("APP_SERVER_TYPE"); } else { System.setProperty("APP_SERVER_TYPE", originalAppServerType); } } }
分享到:
收藏