教你一招,轻松实现打印pdf文件名根据单据名生成

栏目:云苍穹知识作者:金蝶来源:金蝶云社区发布:2024-09-23浏览:1

教你一招,轻松实现打印pdf文件名根据单据名生成

苍穹打印默认取“打印模板名称”作为pdf文件名,如果默认名称无法满足用户需求,则用户可以通过开发插件的方式,来自定义生成pdf文件名。


为满足客户需求,小编将通过案例,讲解如何实现修改pdf文件名的功能


1 规则介绍


系统默认生成pdf文件的文件名命名规则如下:


  • 规则一:第一份pdf文件文件名默认取打印模板的名称,即“模板名称”.pdf

  • 规则二:第二份pdf文件的文件名取模板名称-1”.pdf,后面的依次类推,加上一个递增的数字。


注:如果在pdf页数小于500(当前系统默认值)的情况下,仅仅会生成一份pdf文档,如果生成的pdf页数超过最大值,则会生成新的pdf文件


适用版本


该功能适用版本为金蝶云·苍穹V4.0.0018及以上版本。


模板配置


3.1 模板设计


模板设计路径:【配置工具】→【打印配置】→【维护打印模板】,新增打印模板,如下图所示:


上传图片

模板设计示例


3.2 注册插件


创建插件类PdfNamePlugin,并继承AbstractPrintPlugin打印插件基类(基类全路径kd.bos.print.core.plugin.AbstractPrintPlugin),随后在打印模板中注册该插件。


插件开发


首先,修改规则一,默认文件名称取“采购申请单6月归档”。然后,重写beforeExport方法,在第一份pdf文件输出前,修改默认文件名,具体如下:


public class PdfNamePlugin extends AbstractPrintPlugin {

    @Override
    public void beforeExport(BeforeExportEvent evt) {
        super.beforeExport(evt);
        evt.setFileTplName("采购申请单" + ZonedDateTime.now().getMonthValue() + "月归档");
    }
}


修改规则二,pdf默认文件名自定义规则,取A、B、C值,再重写beforeExpFile方法,在每份文件输出前,修改文件名,使用A、B、C间隔以区分文件,具体如下:


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.1 开发前效果


打印模板名称为 “采购申请单”,所以第一份文件名为“采购申请单”,多出来的文件名则加上数字递增作为区分,如下图所示:


上传图片

开发前默认规则效果示例


5.2 开发后效果


1、修改规则一,默认文件名称取“采购申请单6月归档”,改变默认文件名“采购申请单”,使用“采购申请单6月归档”作为pdf模板名称,如下图所示:


上传图片

根据单据名输出pdf文件名


2、修改规则二,pdf默认文件名自定义规则,取A、B、C值,再自定义“采购申请单6月归档”作为前缀,用A、B、C作为文件区分生成pdf文件名,如下图所示:


上传图片

自定义生成pdf文件名示例


6 划重点


苍穹打印默认取“打印模板名称”作为pdf文件名,第一份pdf文件的文件名默认取打印模板的名称,即“模板名称”.pdf。第二份pdf文件的文件名取模板名称-1”.pdf,后面的依次类推,加上一个递增的数字。


如果想要实现根据单据名称输出pdf文件名,则需要通过插件开发实现:创建插件类PdfNamePlugin,并继承AbstractPrintPlugin打印插件基类,在插件类中重写beforeExport方法和beforeExpFile方法,随后在打印模板中注册该插件。


更多精彩内容,“码”上了解!↓



教你一招,轻松实现打印pdf文件名根据单据名生成

苍穹打印默认取“打印模板名称”作为pdf文件名,如果默认名称无法满足用户需求,则用户可以通过开发插件的方式,来自定义生成pdf文件名。为...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息