From 613b74ee550893843a32b3835212abbfb4cecd6b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrian=20Z=C3=BCrcher?= Date: Thu, 25 Dec 2025 01:14:03 +0100 Subject: [PATCH] add new feature to set progress callback --- converter/converter.go | 11 ++++++++++- html2pdf_test.go | 5 +++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/converter/converter.go b/converter/converter.go index 672e0b1..6b24011 100644 --- a/converter/converter.go +++ b/converter/converter.go @@ -20,6 +20,7 @@ type Converter struct { chromePath string ctx context.Context cancel context.CancelFunc + progress func(progress int) } // NewConverter starts a new converter instance with a chrome headless shell executable @@ -44,9 +45,17 @@ func NewConverter(chromePath string) (*Converter, error) { return c, nil } +func (c *Converter) SetProgressCallback(cb func(progress int)) { + c.progress = cb +} + // Convert converts all given input files func (c *Converter) Convert(files ...models.File) error { - for _, f := range files { + for i, f := range files { + if c.progress != nil { + c.progress(i + 1) + } + if f.Input == "" || filepath.Ext(f.Input) != ".html" { return fmt.Errorf("no .html input file path provided: %s", f.Input) } else if f.Output == "" || filepath.Ext(f.Output) != ".pdf" { diff --git a/html2pdf_test.go b/html2pdf_test.go index 3f4d751..fa117d2 100644 --- a/html2pdf_test.go +++ b/html2pdf_test.go @@ -1,6 +1,7 @@ package html2pdf import ( + "fmt" "os" "path/filepath" "strings" @@ -46,6 +47,10 @@ func TestConvertFiles(t *testing.T) { t.Fatal(err) } + c.SetProgressCallback(func(progress int) { + fmt.Println(progress) + }) + if err := c.Convert(input...); err != nil { t.Fatal(err) }