package utils import ( "bytes" "mtp20_assisted/global" "os/exec" "runtime" "go.uber.org/zap" ) // 说明:使用本功能需要下载libreoffice SDK // https://zh-cn.libreoffice.org/download/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 } } // // 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 { global.M2A_LOG.Error("执行命令错误", zap.Any("err", err)) return "", false } else { return string(buf), true } }