2025-04-24 20:44:45 +02:00

52 lines
1022 B
Go

package services
import (
"bytes"
"fmt"
"os/exec"
"strings"
)
func scanImage(args ...string) (string, error) {
cmd := exec.Command("scanimage", args...)
var stderr bytes.Buffer
cmd.Stderr = &stderr
var stdout bytes.Buffer
cmd.Stdout = &stdout
err := cmd.Run()
if err != nil {
return "", fmt.Errorf("error scanning: %v", stderr.String())
}
return stdout.String(), nil
}
func status() (string, error) {
result, err := scanImage("--status")
if err != nil {
return "", fmt.Errorf("error getting status: %v", err)
}
return result, nil
}
func listDevices() ([]string, error) {
result, err := scanImage("--list-devices")
if err != nil {
return nil, fmt.Errorf("error listing devices: %v", err)
}
return strings.Split(result, "\n"), nil
}
func startScan(outputFile string) (string, error) {
result, err := scanImage("-d", "escl:https://printer:443", "--format", "pdf", "--output-file", outputFile)
if err != nil {
return "", fmt.Errorf("error scanning: %v", err)
}
return result, nil
}