教你一招,轻松实现打印pdf文件名根据单据名生成
苍穹打印默认取“打印模板名称”作为pdf文件名,如果默认名称无法满足用户需求,则用户可以通过开发插件的方式,来自定义生成pdf文件名。
为满足客户需求,小编将通过案例,讲解如何实现修改pdf文件名的功能。
1 规则介绍
系统默认生成pdf文件的文件名命名规则如下:
规则一:第一份pdf文件文件名默认取打印模板的名称,即“模板名称”.pdf。 规则二:第二份pdf文件的文件名取“模板名称-1”.pdf,后面的依次类推,加上一个递增的数字。
注:如果在pdf页数小于500(当前系统默认值)的情况下,仅仅会生成一份pdf文档,如果生成的pdf页数超过最大值,则会生成新的pdf文件。
2 适用版本
该功能适用版本为金蝶云·苍穹V4.0.0018及以上版本。
3 模板配置
3.1 模板设计
模板设计路径:【配置工具】→【打印配置】→【维护打印模板】,新增打印模板,如下图所示:
模板设计示例
3.2 注册插件
创建插件类PdfNamePlugin,并继承AbstractPrintPlugin打印插件基类(基类全路径kd.bos.print.core.plugin.AbstractPrintPlugin),随后在打印模板中注册该插件。
4 插件开发
首先,修改规则一,默认文件名称取“采购申请单6月归档”。然后,重写beforeExport方法,在第一份pdf文件输出前,修改默认文件名,具体如下: 修改规则二,pdf默认文件名自定义规则,取A、B、C值,再重写beforeExpFile方法,在每份文件输出前,修改文件名,使用A、B、C间隔以区分文件,具体如下:public class PdfNamePlugin extends AbstractPrintPlugin {
@Override
public void beforeExport(BeforeExportEvent evt) {
super.beforeExport(evt);
evt.setFileTplName("采购申请单" + ZonedDateTime.now().getMonthValue() + "月归档");
}
}public class EveryPdfNamePlugin extends AbstractPrintPlugin {
private static final char[] ch = {'A', 'B', 'C'};
private int counter;
@Override
public void beforeExpFile(ExpFileEvent evt) {
super.beforeExpFile(evt);
evt.setFileName("采购申请单" + ZonedDateTime.now().getMonthValue() + "月归档_" + ch[counter++ % 3]);
}
}5 效果预览
5.1 开发前效果
打印模板名称为 “采购申请单”,所以第一份文件名为“采购申请单”,多出来的文件名则加上数字递增作为区分,如下图所示:
开发前默认规则效果示例
5.2 开发后效果
1、修改规则一,默认文件名称取“采购申请单6月归档”,改变默认文件名“采购申请单”,使用“采购申请单6月归档”作为pdf模板名称,如下图所示:
根据单据名输出pdf文件名
2、修改规则二,pdf默认文件名自定义规则,取A、B、C值,再自定义“采购申请单6月归档”作为前缀,用A、B、C作为文件区分生成pdf文件名,如下图所示:
自定义生成pdf文件名示例
苍穹打印默认取“打印模板名称”作为pdf文件名,第一份pdf文件的文件名默认取打印模板的名称,即“模板名称”.pdf。第二份pdf文件的文件名取“模板名称-1”.pdf,后面的依次类推,加上一个递增的数字。 如果想要实现根据单据名称输出pdf文件名,则需要通过插件开发实现:创建插件类PdfNamePlugin,并继承AbstractPrintPlugin打印插件基类,在插件类中重写beforeExport方法和beforeExpFile方法,随后在打印模板中注册该插件。6 划重点
更多精彩内容,“码”上了解!↓
教你一招,轻松实现打印pdf文件名根据单据名生成
本文2024-09-23 00:39:10发表“云苍穹知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-cangqiong-140852.html