打印二开常见问题(二)

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_打印二开常见问题(二)
1、如何把扩展的参数传入打印中实现一个列表插件,在beforeDoOperation事件中放入key=extParam的参数,具体参考public class passextlist e...
点击下载文档文档为doc格式
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
上一篇
已经是第一篇



