本文档详细介绍了如何使用金蝶EAS系统中的套打功能,在不依赖第三方工具的情况下直接通过后台操作生成PDF文件的方法和步骤。
### 金蝶EAS通过套打模板实现后台生成PDF文件
#### 概述
本段落旨在介绍如何在金蝶EAS系统中利用套打模板技术,通过后台服务器代码自动生成PDF文件,进而完成合同等文件的档案归档与备份工作。这种方法能够显著提高工作效率,减少人工操作,确保文档的一致性和准确性。
#### 关键技术点
1. **自定义标准打印DataProvider类**
- **概述**:在EAS开发过程中,自定义DataProvider是实现套打模板的关键环节。通过继承`AbstractPrintDataProvider`并重写其中的方法,可以定制化地获取需要填充到模板的数据。
- **具体步骤**:
- 创建一个继承自`AbstractPrintDataProvider`的新类`DefaultDataProvider`。
- 修改该类中的`getData`方法,使其能够从前台查询转换为后台查询逻辑,以适应服务器端的数据处理需求。
- 实现具体的后台查询逻辑,如数据库访问、数据筛选等。
2. **具体打印实现代码详解**
- **关键代码解析**:
```java
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 = com.kingdee.eas.cp.bc.app.BizAccountBillForR1PrintQuery;
IMetaDataPK tdquery = new MetaDataPK(tableName);
query主数据
DefaultDataProvider provider = new DefaultDataProvider(ctx, list, tdquery);
各单据模版地址
String tDFileName = FICPBCbizaccountaccmount2019.r1-print;
try {
outputStream = new FileOutputStream(D: + File.separator + 1.pdf);
远程协议进行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);
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} finally {
关闭输出流
if (outputStream != null) {
try {
outputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
```
- **解析**:
- 此段代码实现了PDF文件的导出功能,包括设置输出路径、初始化远程配置、调用PDF导出方法等。
- 使用`KDNoteWebServerHelper`类的`exportPDF`方法来完成PDF的生成,该方法需要指定模板文件路径、数据提供者及输出流等参数。
- 在执行过程中,还需要对系统属性`APP_SERVER_TYPE`进行临时设置和恢复,以确保正确的运行环境。
#### 总结
通过上述步骤,我们可以在金蝶EAS系统中利用套打模板技术,通过后台服务器代码自动生成PDF文件,从而高效地完成文档的归档与备份。这种方法不仅提高了自动化水平,还增强了文档管理的安全性和规范性。对于企业而言,这是一个非常实用的功能,值得深入研究和应用。