ajout app
This commit is contained in:
65
Voltaserve/conversion/processor/pdf_processor.go
Normal file
65
Voltaserve/conversion/processor/pdf_processor.go
Normal file
@ -0,0 +1,65 @@
|
||||
package processor
|
||||
|
||||
import (
|
||||
"os"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
"voltaserve/config"
|
||||
"voltaserve/core"
|
||||
"voltaserve/helper"
|
||||
"voltaserve/infra"
|
||||
)
|
||||
|
||||
type PDFProcessor struct {
|
||||
cmd *infra.Command
|
||||
imageProc *ImageProcessor
|
||||
config config.Config
|
||||
}
|
||||
|
||||
func NewPDFProcessor() *PDFProcessor {
|
||||
return &PDFProcessor{
|
||||
cmd: infra.NewCommand(),
|
||||
imageProc: NewImageProcessor(),
|
||||
config: config.GetConfig(),
|
||||
}
|
||||
}
|
||||
|
||||
func (p *PDFProcessor) Base64Thumbnail(inputPath string) (core.ImageBase64, error) {
|
||||
outputPath := filepath.FromSlash(os.TempDir() + "/" + helper.NewID() + ".png")
|
||||
if err := p.imageProc.ThumbnailFromImage(inputPath, 0, p.config.Limits.ImagePreviewMaxHeight, outputPath); err != nil {
|
||||
return core.ImageBase64{}, err
|
||||
}
|
||||
b64, err := helper.ImageToBase64(outputPath)
|
||||
if err != nil {
|
||||
return core.ImageBase64{}, err
|
||||
}
|
||||
imageProps, err := p.imageProc.MeasureImage(outputPath)
|
||||
if err != nil {
|
||||
return core.ImageBase64{}, err
|
||||
}
|
||||
if _, err := os.Stat(outputPath); err == nil {
|
||||
if err := os.Remove(outputPath); err != nil {
|
||||
return core.ImageBase64{}, err
|
||||
}
|
||||
}
|
||||
return core.ImageBase64{
|
||||
Base64: b64,
|
||||
Width: imageProps.Width,
|
||||
Height: imageProps.Height,
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (p *PDFProcessor) TextFromPDF(inputPath string) (string, error) {
|
||||
outputPath := filepath.FromSlash(os.TempDir() + "/" + helper.NewID() + ".txt")
|
||||
if err := infra.NewCommand().Exec("pdftotext", inputPath, outputPath); err != nil {
|
||||
return "", err
|
||||
}
|
||||
b, err := os.ReadFile(outputPath)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
if err := os.Remove(outputPath); err != nil {
|
||||
return "", err
|
||||
}
|
||||
return strings.TrimSpace(string(b)), nil
|
||||
}
|
Reference in New Issue
Block a user