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

}