打印二开常见问题(二)
1、如何把扩展的参数传入打印中
实现一个列表插件,在beforeDoOperation事件中放入key=extParam的参数,具体参考
public class passextlist extends AbstractListPlugin implements Plugin { @Override public void beforeDoOperation(BeforeDoOperationEventArgs args) { super.beforeDoOperation(args); Object source = args.getSource(); if(source instanceof PrintPreview) { PrintPreview printPreview=(PrintPreview)source; HashMap<Object, Object> params = new HashMap<>(); params.put("test",12313131); printPreview.getParameter().put("extParam",params); } } }
在打印插件中就可以使用this.getExtParam()获取到传进来的参数
2、如何把打印生成的文件保存在附件面板中
//因为打印生成的临时文件,后续会自动清理,故而需要业务上传的文件服务器转存。 FileService fileService = FileServiceFactory.getAttachmentFileService(); InputStream inputStream = BosPrintServiceHelper.getFileInputStream(path); path = fileService.upload(new FileItem("文件名.pdf", "/租户ID/数据中心ID/20230425/xxx/文件名.pdf", inputStream)); try { //2.附件绑定目标单据 List<AttDto> attDtoList = new ArrayList<>(); AttDto attDto = new AttDto(); //绑定文件服务器中的路径 attDto.setPath(path); //单据附件标识 attDto.setAttKey("attachmentpanel"); //文件大小(字节数) attDto.setSize(Long.valueOf( AttachmentServiceHelper.getFileSizeByPath(attDto.getPath()))); attDtoList.add(attDto); //第一个参数为目标单据标识;第二个参数为目标单据pkId,第三个参数为附件列表 Map<String, Object> bindingParam = AttachmentServiceHelper.genBindingParam("im_purreceivebill_test", String.valueOf(id), attDtoList); //绑定接口返回结果 Map<String, Object> resultMap = AttachmentServiceHelper.bindingAttachment(bindingParam); if ((boolean) resultMap.get("success")) { //成功刷新界面,即绑定附件在单据界面上 this.getView().updateView(); } } catch (Exception e) { throw new KDBizException(e.getMessage()); }
具体实现可以参考:打印模板生成附件保存在单据中 (kingdee.com)
3、如何调用云打印接口
PrtAttach prtAttach = BosPrintServiceHelper.doPrintDirect(String printerId,PrintWork work)
printId打印机id
调用此接口可以实现跳过预览,直接打印出纸的效果
4、如何把图片字段绑定到数据表格
/** * 打印图片控件,数据表格绑定图片 */ public class BindImagePlugin extends AbstractPrintPlugin { @Override public void afterLoadData(AfterLoadDataEvent evt) { List<DataRowSet> dataRowSets = evt.getDataRowSets(); for (DataRowSet dataRowSet : dataRowSets) { //获取单据体数据集合 CollectionField applyentity = dataRowSet.getCollectionField("applyentity"); List<DataRowSet> entityRows = applyentity.getValue(); //图片地址需要是图片服务器的地址,不带域名 List<String> imageUrls = Arrays.asList("/tenant_devcore_dev/xx/b1.webp?v=1.0", "/tenant_devcore_dev/xx/b2.webp?v=1.0", "/tenant_devcore_dev/xx/b3.webp?v=1.0"); for (int index = 0; index < entityRows.size(); index++) { DataRowSet entityRow = entityRows.get(index); if(index<3){ //将图片信息添加到数据包 entityRow.put("entityImage",new ImageField(imageUrls.get(index))); } } } } @Override public void beforeOutputWidget(BeforeOutputWidgetEvent evt) { String widgetKey = evt.getWidgetKey(); //数据表格 if("DataGrid".equals(widgetKey)&&evt instanceof BeforeOutputGridEvent){ BeforeOutputGridEvent event = (BeforeOutputGridEvent) evt; PWGridRowBo row = event.getGrid().getRow(1); //获取单元格 PWGridCellBo cell = row.getCell(9); cell.setCellValue("purchase_apply_yby.applyentity","entityImage"); } //图片控件 if("Sign".equals(widgetKey)){ //图片地址需要是图片服务器的地址,不带域名 evt.setOutputValue(new ImageField("/tenant_devcore_dev/xx/q.webp?v=1.0")); } } }
5、如何获取单据匹配的打印模板
使用打印模板工具类:kd.bos.print.matchtpl.TplMatcherUtil
6、如何隐藏打印模板控件
在打印插件的beforeOutputWidget事件中使用BeforeOutputWidgetEvent类中的方法实现
方法 | 说明 |
void setHidden(boolean isHidden) | true 隐藏控件不输出,false控件正常输出,隐藏控件后下方控件不会上移 |
void setHideMove(boolean hideMove) | 隐藏控件后,下方控件可以上移 |
7、如何修改打印对单张单分录条数大小的限制
实现一个打印插件,继承AbstractPrintSeniorPlugin,然后在beforeInitDataVisitor事件中进行修改,例如:
public class AddPrintEntrySizePlugin extends AbstractPrintSeniorPlugin { @Override public void beforeInitDataVisitor(DataVisitorEvent event) { super.beforeInitDataVisitor(event); event.setMaxEntrySize(xxx); event.setMaxQuerySize(xxx); } }
maxEntrySize是单张单最大分录数,超出提示不让打印
maxBatchEntrySize是每批次最大分录数量
maxQuerySIze是单次查询最大数量,超出则分批处理
注意:此处修改需要谨慎进行,如果修改过大会影响系统稳定性
打印二开常见问题(二)
1、如何把扩展的参数传入打印中实现一个列表插件,在beforeDoOperation事件中放入key=extParam的参数,具体参考public class passextlist e...
点击下载文档
本文2024-09-23 00:35:31发表“云苍穹知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-cangqiong-140454.html
您需要登录后才可以发表评论, 登录登录 或者 注册
最新文档
热门文章