泛微E9流程表单转为html或pdf文件相关开发整理说明

1、Wf2PdfUtil

此工具类为将流程表单转为pdf的工具类代码,可以根据实际传入参数即可实现将表单转为pdf或html,用于和档案系统集成时较多。

package com.weavernorth;

import com.engine.common.util.ServiceUtil;
import com.engine.workflow.service.HtmlToPdfService;
import com.engine.workflow.service.impl.HtmlToPdfServiceImpl;
import net.sf.json.JSONObject;
import weaver.file.FileSecurityUtil;
import weaver.file.FileUpload;
import weaver.file.ImageFileManager;
import weaver.general.Util;
import weaver.hrm.User;
import weaver.hrm.UserManager;
import weaver.integration.logging.Logger;
import weaver.integration.logging.LoggerFactory;
import weaver.system.SystemComInfo;
import weaver.workflow.workflow.WorkflowConfigComInfo;

import java.io.File;
import java.io.FileInputStream;
import java.util.HashMap;
import java.util.Map;

/**
 * @Classname Wf2PdfUtil
 * @Description TODO
 * @Version 1.0.0
 * @Date 2023/5/10 8:51
 * @Created by 渣渣
 */
public class Wf2PdfUtil {
    private Logger log = LoggerFactory.getLogger(Wf2PdfUtil.class);

    /**
     * @param requestid
     * @param isKeepsign 是否需要签字意见
     * @param onlyHtml   0 只转pdf  1只转html  2 都转
     * @return
     */
    public Map getwfPDF(String requestid, boolean isKeepsign, String onlyHtml) {
        String keepsign = "0";
        if (isKeepsign) {
            keepsign = "1";
        }
        UserManager userManager = new UserManager();
        User user = userManager.getUserByUserIdAndLoginType(1, "1");
        HashMap hashMap = new HashMap();
        hashMap.put("requestid", requestid);
        hashMap.put("limitauth", "0");
        //0 只转pdf  1只转html  2 都转
        hashMap.put("onlyHtml", onlyHtml);
        hashMap.put("keepsign", keepsign);
        Map filemap = null;
        try {
            log.info("表单转PDF参数:" + JSONObject.fromObject(hashMap).toString());
            filemap = this.getFileId(hashMap, user);
            log.info("表单转PDF结果:" + JSONObject.fromObject(filemap).toString());
        } catch (Exception e) {
            log.error(e.getMessage(), e);
        }
        return filemap;
    }

    public String getFileSavePath() {
        SystemComInfo systemComInfo = new SystemComInfo();
        String createDir = FileUpload.getCreateDir(systemComInfo.getFilesystem());
        createDir = createDir.replace("\\", "/");
        if (createDir.endsWith("/")) {
            createDir = createDir.substring(0, createDir.length() - 1);
        }
        return createDir;
    }

    public Map<String, String> getFileId(Map<String, Object> hashMap, User user) {
        HashMap returnMap = new HashMap();
        hashMap.put("path", this.getFileSavePath());
        hashMap.put("isTest", "1");
        this.injectuseWk(hashMap);
        HtmlToPdfService htmlToPdfService = (HtmlToPdfService) ServiceUtil.getService(HtmlToPdfServiceImpl.class, user);
        Object o = htmlToPdfService != null ? htmlToPdfService.getFormDatas(hashMap) : new HashMap();
        String path = Util.null2String(((Map) o).get("path"));
        String onlyHtml = Util.null2String(hashMap.get("onlyHtml"));
        String filename;
        String filePath;
        String fileid;
        //只转为pdf
        if (onlyHtml.equals("0")) {
            filename = Util.null2String(((Map) o).get("filename"));
            filePath = path + File.separator + filename;
            fileid = this.saveAsFile(filePath, filename);
            if (!"".equals(fileid)) {
                returnMap.put("pdf", fileid);
            }
        }
        //转为html
        else if (onlyHtml.equals("1")) {
            filename = Util.null2String(((Map) o).get("filename"));
            filePath = path + File.separator + filename;
            fileid = this.saveAsFile(filePath, filename);
            if (!"".equals(fileid)) {
                returnMap.put("html", fileid);
            }
        }
        //既要转pdf又要转html
        else if (onlyHtml.equals("2")) {
            filename = Util.null2String(((Map) o).get("pdffilename"));
            filePath = Util.null2String(((Map) o).get("htmlfilename"));
            fileid = path + File.separator + filename;
            String htmlFullPath = path + File.separator + filePath;
            String pdf_id = this.saveAsFile(fileid, filename);
            String htmlfileid = this.saveAsFile(htmlFullPath, filePath);
            if (!"".equals(pdf_id)) {
                returnMap.put("pdf", pdf_id);
            }
            if (!"".equals(htmlfileid)) {
                returnMap.put("html", htmlfileid);
            }
        }
        return returnMap;
    }

    public String saveAsFile(String filepath, String filename) {
        FileInputStream fileInputStream = null;
        byte[] bytes = null;
        File file = new File(filepath);
        if (file.exists()) {
            try {
                fileInputStream = new FileInputStream(file);
                bytes = new byte[(int) file.length()];
                fileInputStream.read(bytes);
                fileInputStream.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }

        ImageFileManager imageFileManager = new ImageFileManager();
        imageFileManager.setComefrom("WorkflowToDoc");
        imageFileManager.setData(bytes);
        imageFileManager.setImagFileName(filename);
        int imageFileid = imageFileManager.saveImageFile();
        if (imageFileid <= 0) {
            log.info("保存离线HTML/PDF文件失败");
            return "";
        } else {
            FileSecurityUtil.deleteFile(file);
            return imageFileid + "";
        }
    }

    private void injectuseWk(Map<String, Object> map) {
        if (!map.containsKey("useWk")) {
            WorkflowConfigComInfo workflowConfigComInfo = new WorkflowConfigComInfo();
            String usewk = workflowConfigComInfo.getValue("htmltopdf_usewk");
            map.put("useWk", usewk);
        }

    }
}

2、测试方法

  Wf2PdfUtil wf2PdfUtil = new Wf2PdfUtil();
  Map map = wf2PdfUtil.getwfPDF("236236", true, "2");
//map的值={pdf=3251, html=3252} 

核对文件,查询数据库

image-20230510120807221

表单存为pdf

image-20230510120948067

html文件

image-20230510121125553

image-20230510121206731

3、引入字体

需要在对应目录下引入字体文件,否则可能导致转出的pdf样式缺失。

如下图怪怪的。

image-20230510121408909

引入字体到对应目录:/weaver/ecology/font/workflow/pdf

image-20230510121303261

### 回答1: 泛微oa是一种非常常用的办公自动化系统,可以帮助公司和组织实现业务流程的规范化、自动化和电子化。其中流程表单创建是非常重要的一环,可以通过以下步骤完成: 1. 登录泛微oa系统并打开流程设置界面 2. 选择表单设计器并创建新的表单 3. 设置表单名称、表单视图和相关字段等信息 4. 根据业务需要,使用表单设计器进行表单的设计和布局 5. 保存表单并发布,使得其他用户可以访问和使用该表单 在完成表单设计后,我们可以使用相关的接口对该表单进行进一步的操作和调用,例如: 1. 使用流程相关接口获取已提交的表单数据,并进行处理和存储 2. 通过接口进行审批操作,例如同意、驳回等 3. 使用表单查看接口查询、导出或打印已提交的表单数据 4. 在其他系统中调用表单接口以实现数据传递和共享 以上是泛微oa流程表单创建及相关接口调用的一些基本步骤和操作方法,需要根据实际业务需求进行具体的调整和实现。同时,我们也需要注意系统的安全性和可靠性,确保数据的准确性和保密性。 ### 回答2: 泛微OA是世界领先的企业级应用软件提供商,其提供全面的办公自动化解决方案。在泛微OA中,流程表单是企业信息化建设中的重要组成部分,用于承载各种业务流程和数据,能够帮助企业实现信息化的全面提升。 泛微OA流程表单的创建是指企业管理员根据业务需求,使用表单设计器等工具创建公司所需的流程表单,包括设计表单布局、字段属性、审批流程、数据导入等,以满足企业日常的审批、审批、报销等业务需求。表单设计器可以直接在浏览器中进行设计和修改,具有简单易用,功能全面的特点,使得企业管理员能够快速地创建所需的表单泛微OA同时还提供了一系列的API接口,帮助企业对流程表单进行管理和调用。这些API接口包括表单存储接口、缓存接口、发布接口、查询接口、导出接口、导入接口等,能够满足企业各类数据管理和业务流程的操作需求。企业开发人员可以通过调用这些API接口,实现对流程表单的管控和使用,使得系统与企业其他应用系统的集成更加方便。同时,泛微OA还提供了详尽的API文档和开发手册,使得开发人员在进行API接口调用时,能够快速地进行开发和调试,提高了开发效率和质量。 综上所述,泛微OA流程表单的创建和相关接口调用,是企业信息化建设中的重要环节,能够帮助企业提高工作效率,加快业务流程的处理速度和准确度,实现企业数字化型。 ### 回答3: 泛微OA是一款企业级的办公自动化系统,可以帮助企业将日常的业务流程进行数字化管理。在泛微OA中,可以通过表单创建流程,而流程则可以通过相关接口调用实现自动化处理。 泛微OA表单创建功能相对比较简单,用户可以通过系统提供的表单设计器进行创建。在表单设计界面中,用户可以根据业务需求添加各种控件和字段。同时,泛微OA也提供了一些常用的表单模板,用户可以直接选择相应的模板进行创建。表单创建完成后,用户需要进行流程设计。 在流程设计中,用户可以根据业务需求设计各个节点,并设置节点的处理人和流规则。设计完成后,系统会自动生成相应的流程模板。在流程中,可以通过相关接口调用实现自动处理。 泛微OA提供了一系列的接口,包括Web Service、RESTful API、OA协议等。用户可以根据实际需求选择相应的接口进行调用。例如,用户可以通过接口实现对流程的发起、终止、暂停、恢复等操作。同时,用户还可以通过接口获取流程的当前状态、处理记录、评审意见等数据。 需要注意的是,使用接口进行流程处理需要具备一定的开发能力和相关技术背景。如果企业没有专门的开发团队,建议寻求泛微OA的合作伙伴进行定制化开发和技术支持。同时,企业也可以参考泛微OA提供的开发文档和示例代码,自行开发所需的业务应用。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值