From 39fb913f87193457b5b7e03399a83971a61540f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrian=20Z=C3=BCrcher?= Date: Mon, 29 Dec 2025 11:20:50 +0100 Subject: [PATCH] fix compile error for other os than windows --- converter/converter.go | 22 ++++------------------ converter/hideOthers.go | 9 +++++++++ converter/hideWindows.go | 23 +++++++++++++++++++++++ 3 files changed, 36 insertions(+), 18 deletions(-) create mode 100644 converter/hideOthers.go create mode 100644 converter/hideWindows.go diff --git a/converter/converter.go b/converter/converter.go index 9d69ced..27e2e83 100644 --- a/converter/converter.go +++ b/converter/converter.go @@ -8,7 +8,6 @@ import ( "path/filepath" "runtime" "strings" - "syscall" "time" "gitea.tecamino.com/paadi/html2pdf/models" @@ -85,7 +84,6 @@ func (c *Converter) Convert(files ...models.File) error { htmlURL.WriteString(filepath.ToSlash(absPath)) c.ctx, c.cancel = context.WithTimeout(c.ctx, 60*time.Second) - defer c.cancel() var pdfData []byte err = chromedp.Run(c.ctx, @@ -104,15 +102,19 @@ func (c *Converter) Convert(files ...models.File) error { return nil }), ) + if err != nil { + c.cancel() return err } // Save PDF to file if err := os.WriteFile(f.Output, pdfData, 0644); err != nil { + c.cancel() return err } } + c.cancel() return nil } @@ -162,19 +164,3 @@ 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) - } -} diff --git a/converter/hideOthers.go b/converter/hideOthers.go new file mode 100644 index 0000000..a0dd4e5 --- /dev/null +++ b/converter/hideOthers.go @@ -0,0 +1,9 @@ +//go:build !windows + +package converter + +// hideConsole does nothing on non-Windows systems +func hideConsole() { + // macOS and Linux don't have the same "console window" concept + // that needs manual hiding at runtime like Windows. +} diff --git a/converter/hideWindows.go b/converter/hideWindows.go new file mode 100644 index 0000000..e47d9e4 --- /dev/null +++ b/converter/hideWindows.go @@ -0,0 +1,23 @@ +//go:build windows + +package converter + +import ( + "syscall" +) + +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) + } +}