方法[^本地需安装libreoffice]

/**
*@tips libreoffice 转换指令:
* libreoffice6.2 invisible --convert-to pdf csDoc.doc --outdir /home/[转出目录]
*
* @function 实现文档类型转换为pdf或html
* @param command:libreofficed的命令(具体以版本为准);win:soffice; linux:libreoffice6.2
*     fileSrcPath:转换文件的路径
*         fileOutDir:转换后文件存储目录
*       converterType:转换的类型pdf/html
* @return fileOutPath 转换成功生成的文件的路径 error 转换错误
 */
func FuncDocs2Pdf(command string, fileSrcPath string, fileOutDir string, converterType string) (fileOutPath string, error error) {
  //校验fileSrcPath
  srcFile, erByOpenSrcFile := os.Open(fileSrcPath)
  if erByOpenSrcFile != nil && os.IsNotExist(erByOpenSrcFile) {
      return "", erByOpenSrcFile
  }
  //如文件输出目录fileOutDir不存在则自动创建
  outFileDir, erByOpenFileOutDir := os.Open(fileOutDir)
  if erByOpenFileOutDir != nil && os.IsNotExist(erByOpenFileOutDir) {
      erByCreateFileOutDir := os.MkdirAll(fileOutDir, os.ModePerm)
      if erByCreateFileOutDir != nil {
          logs.Error("File ouput dir create error.....", erByCreateFileOutDir.Error())
          return "", erByCreateFileOutDir
      }
  }
  //关闭流
  defer func() {
      _ = srcFile.Close()
      _ = outFileDir.Close()
  }()
  //convert
  cmd := exec.Command(command, "--invisible", "--convert-to", converterType,
      fileSrcPath, "--outdir", fileOutDir)
  byteByStat, errByCmdStart := cmd.Output()
  //命令调用转换失败
  if errByCmdStart != nil {
      return "", errByCmdStart
  }
  //success
  fileOutPath = fileOutDir + "/" + strings.Split(path.Base(fileSrcPath), ".")[0]
  if converterType == "html" {
      fileOutPath += ".html"
  } else {
      fileOutPath += ".pdf"
  }
  logs.Info("文件转换成功...", string(byteByStat))
  return fileOutPath, nil
}