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) }