43 lines
871 B
Go
43 lines
871 B
Go
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
|
|
}
|