package pdf import ( "context" "io" "net/http" "github.com/starwalkn/gotenberg-go-client/v8" "github.com/starwalkn/gotenberg-go-client/v8/document" ) type Service struct { gotenberg *gotenberg.Client } func New(hostname string) (service *Service, err error) { service = &Service{} service.gotenberg, err = gotenberg.NewClient(hostname, http.DefaultClient) return } func (s *Service) HtmlToPdf(html string) (pdf io.ReadCloser, err error) { index, err := document.FromString("index.html", html) if err != nil { return } req := gotenberg.NewHTMLRequest(index) req.PaperSize(gotenberg.A4) req.Margins(gotenberg.NoMargins) // Skips the IDLE events for faster PDF conversion. req.SkipNetworkIdleEvent(true) req.EmulatePrintMediaType() resp, err := s.gotenberg.Send(context.Background(), req) if err != nil { return } pdf = resp.Body return }