如何实现每条单据打印一个pdf

1 问题描述
目前很多国企客户,都有一个二开干部任免审批表,在打印的时候希望每条单据打印成一个PDF以便发给对应的干部
2 解决方法
步骤一:创建一个打印模板
步骤二:添加一个操作代码为donothing的按钮

步骤三:二开一个列表插件,调用打印接口
接口一:
PrtAttach prtAttach = BosPrintServiceHelper.execPrint(PrintWork work)
适用版本: V5.0.011,V5.0.019以上版本
接口二:
适用版本: V5.0.011,V5.0.019以上版本废弃,建议使用上面的execPrint接口
PrtAttach prtAttach = BosPrintServiceHelper.doPrint(PrintWork work)
参数说明
PrintWork 参数说明
参数名称 | 类型 | 必填 | 说明 |
pageId | String | 否 | 页面pageid.如报表等,插件内需要根据pageId获取数据,则必传 |
printLang | String | 是 | 打印语言 |
expType | String | 是 | 导出类型(pdf,xls) |
isVerEconomizePaper | Boolean | 否 | 是否纵向节纸 |
isHorEconomizePaper | Boolean | 否 | 是否横向节纸 |
taskList | List<PrintTask> | 是 | 打印任务,一个模版对应一个PrintTask。一个PrintTask. 参考参数PrintTask |
extParam | Map | 否 | 扩展参数. |
PrintTask 参数说明
参数名称 | 类型 | 必填 | 说明 |
tplId | String | 是 | 模版ID |
pkIds | List<Object> | 是 | 单据,基础资料等数据内码 |
返回结果
PrtAttach 对象
参数值 | 类型 | 非空 | 说明 |
taskId | String | 是 | 每次任务对应一个taskId |
formId | String | 是 | 表单编码 |
appId | String | 否 | 应用编码 |
userId | String | 否 | 操作用户id |
orgId | String | 否 | 表单所属组织id |
| diskType | String | 是 | 文件存贮类型(0附件服务器,2临时文件) |
attachDetails | List<AttachDetail> | 是 | 打印结果附件信息。详情见AttachDetail |
AttachDetail对象
参数值 | 类型 | 非空 | 说明 |
attachId | String | 是 | 附件id |
fileName | String | 是 | 附件名称 |
filePath | String | 是 | 附件路径 |
fileType | String | 是 | 附件类型 pdf, xlsx |
source | String | 是 | 附件来源 A 旧打印 |
代码参考:
package plugin.print;
import com.kingdee.bos.qinglightapp.cache.CacheServiceFactory;
import kd.bos.entity.datamodel.ListSelectedRow;
import kd.bos.entity.datamodel.ListSelectedRowCollection;
import kd.bos.form.control.events.ItemClickEvent;
import kd.bos.list.IListView;
import kd.bos.list.plugin.AbstractListPlugin;
import kd.bos.print.api.PrintTask;
import kd.bos.print.api.PrintWork;
import kd.bos.print.core.service.PrtAttach;
import kd.bos.print.service.BosPrintServiceHelper;
import kd.bos.servicehelper.AttachmentServiceHelper;
import kd.bos.url.UrlService;
import kd.sdk.plugin.Plugin;
import java.util.ArrayList;
import java.util.EventObject;
import java.util.Iterator;
import java.util.List;
/**
* 标准单据列表插件
*/
public class Onebillonepdf extends AbstractListPlugin implements Plugin {
//二开的打印按钮标识
public static final String PRINTKEY="pio1_baritemap";
//打印语言
public static final String PRINTLANG="zh_CN";
//打印格式,支持pdf、excel
public static final String PRINTTYPE="pdf";
//打印模板的编码
public static final String TPLNUM="pio1_cadretable_prtpl";
//是否纵向节纸
public static final Boolean ISVERECONOMIZEPAPER=false;
//是否横向节纸
public static final Boolean ISHORECONOMIZEPAPER=false;
@Override
public void registerListener(EventObject e) {
super.registerListener(e);
//监听工具栏
this.addItemClickListeners("tbmain");
}
@Override
public void itemClick(ItemClickEvent evt) {
super.itemClick(evt);
//获取操作标识
String key = evt.getItemKey();
//判断是如何实现每条单据打印一个pdf
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。



