知识分享之Golang——一个常见word、excel转换pdf的工具函数

知识分享之Golang——一个常见word、excel转换pdf的工具函数

背景

知识分享之Golang篇是我在日常使用Golang时学习到的各种各样的知识的记录,将其整理出来以文章的形式分享给大家,来进行共同学习。欢迎大家进行持续关注。

知识分享系列目前包含Java、Golang、Linux、Docker等等。

开发环境

  • 系统:windows10
  • 语言:Golang
  • golang版本:1.18

内容

本节我们进行分享一个常见word、excel格式转换pdf的工具函数,本函数参考开源代码,使用的核心组件是libreoffice,需要在其运行的windows环境或Linux环境下安装libreoffice方可使用该工具函数进行转换。

//
//  ConvertToPDF
//  @Description: 转换文件为pdf
//  @param filePath 需要转换的文件
//  @param outPath 转换后的PDF文件存放目录
//  @return string
//
func ConvertToPDF(filePath string, outPath string) bool {
    // 1、拼接执行转换的命令
    commandName := ""
    var params []string
    if runtime.GOOS == "windows" {
        commandName = "cmd"
        params = []string{"/c", "soffice", "--headless", "--invisible", "--convert-to", "pdf", filePath, "--outdir", outPath}
    } else if runtime.GOOS == "linux" {
        commandName = "libreoffice"
        params = []string{"--invisible", "--headless", "--convert-to", "pdf", filePath, "--outdir", outPath}
    }
    // 开始执行转换
    if _, ok := interactiveToexec(commandName, params); ok {
        return true
    } else {
        return false
    }
}

func PathExists(path string) (bool, error) {
    _, err := os.Stat(path)
    if err == nil {
        return true, nil
    }
    if os.IsNotExist(err) {
        return false, nil
    }
    return false, err
}

//
//  interactiveToexec
//  @Description: 执行指定命令
//  @param commandName 命令名称
//  @param params 命令参数
//  @return string 执行结果返回信息
//  @return bool 是否执行成功
//
func interactiveToexec(commandName string, params []string) (string, bool) {
    cmd := exec.Command(commandName, params...)
    buf, err := cmd.Output()
    w := bytes.NewBuffer(nil)
    cmd.Stderr = w
    if err != nil {
        log.Println("Error: <", err, "> when exec command read out buffer")
        return "", false
    } else {
        return string(buf), true
    }
}

以上就是本节的干货,有需要的小伙伴可以直接使用,更多知识欢迎持续关注。

本文声明:
88x31.png
知识共享许可协议
本作品由 cn華少 采用 知识共享署名-非商业性使用 4.0 国际许可协议 进行许可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CN華少

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值
>