美文网首页自留地Golang 入门资料+笔记
golang+libreffice6.2实现word,excel

golang+libreffice6.2实现word,excel

作者: 五岁小孩 | 来源:发表于2021-01-18 19:42 被阅读0次

<center><font size="5">golang + libreoffice6.2 实现 word,excel,pptx 转pdf/html</font></center>

  • 方法[^本地需安装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
    }
    
    

相关文章

网友评论

    本文标题:golang+libreffice6.2实现word,excel

    本文链接:https://www.haomeiwen.com/subject/ykvonktx.html