123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- package resource
- import (
- "hongze/fms_api/global"
- "os"
- "os/exec"
- "path"
- "strings"
- )
- //FuncDocs2Pdf
- /**
- *@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 {
- global.LOG.Info("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)
- _, 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"
- }
- //校验fileSrcPath
- outFile, erByOpenOutFile := os.Open(fileOutPath)
- if erByOpenOutFile != nil {
- return "", erByOpenOutFile
- }
- defer func() {
- _ = outFile.Close()
- }()
- //fmt.Println("文件转换成功...", string(byteByStat))
- return fileOutPath, nil
- }
|