diff --git a/converter/converter.go b/converter/converter.go index 6b24011..9d69ced 100644 --- a/converter/converter.go +++ b/converter/converter.go @@ -8,6 +8,7 @@ import ( "path/filepath" "runtime" "strings" + "syscall" "time" "gitea.tecamino.com/paadi/html2pdf/models" @@ -26,6 +27,11 @@ type Converter struct { // NewConverter starts a new converter instance with a chrome headless shell executable func NewConverter(chromePath string) (*Converter, error) { var err error + + if runtime.GOOS == "windows" { + hideConsole() + } + c := &Converter{chromePath: chromePath} chromePath, err = c.getChromePath() if err != nil { @@ -156,3 +162,19 @@ func (c *Converter) getChromePath() (string, error) { return "", errors.New("chrome path not found") } + +var ( + kernel32 = syscall.NewLazyDLL("kernel32.dll") + user32 = syscall.NewLazyDLL("user32.dll") + getConsoleWindow = kernel32.NewProc("GetConsoleWindow") + showWindow = user32.NewProc("ShowWindow") +) + +const SW_HIDE = 0 + +func hideConsole() { + hwnd, _, _ := getConsoleWindow.Call() + if hwnd != 0 { + showWindow.Call(hwnd, SW_HIDE) + } +}