Docker/Voltaserve/conversion/processor/office_processor.go
2024-04-17 20:22:30 +02:00

43 lines
972 B
Go

package processor
import (
"go.uber.org/zap"
"os"
"path"
"path/filepath"
"strings"
"voltaserve/config"
"voltaserve/helper"
"voltaserve/infra"
)
type OfficeProcessor struct {
cmd *infra.Command
config config.Config
logger *zap.SugaredLogger
}
func NewOfficeProcessor() *OfficeProcessor {
logger, err := infra.GetLogger()
if err != nil {
panic(err)
}
return &OfficeProcessor{
cmd: infra.NewCommand(),
config: config.GetConfig(),
logger: logger,
}
}
func (p *OfficeProcessor) PDF(inputPath string) (string, error) {
outputDir := filepath.FromSlash(os.TempDir() + "/" + helper.NewID())
if err := infra.NewCommand().Exec("soffice", "--headless", "--convert-to", "pdf", "--outdir", outputDir, inputPath); err != nil {
return "", err
}
if _, err := os.Stat(inputPath); err != nil {
return "", err
}
base := filepath.Base(inputPath)
return filepath.FromSlash(outputDir + "/" + strings.TrimSuffix(base, path.Ext(base)) + ".pdf"), nil
}