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 }