Skip to content

Instantly share code, notes, and snippets.

@immannino
Created October 13, 2021 17:59
Show Gist options
  • Save immannino/ec71ed433cf458e799fd5b418ac9bea9 to your computer and use it in GitHub Desktop.
Save immannino/ec71ed433cf458e799fd5b418ac9bea9 to your computer and use it in GitHub Desktop.
package pdf
import (
"bytes"
pdf "github.com/SebastiaanKlippert/go-wkhtmltopdf"
)
type PDFProviderInterface interface {
CreatePDF(bytes.Buffer) ([]byte, error)
}
type PDFProvider struct{}
func NewPDFProvider() *PDFProvider {
return &PDFProvider{}
}
// CreatePDF is the method to inject data into the template, then create a PDF out of it
func (p *PDFProvider) CreatePDF(buf bytes.Buffer) ([]byte, error) {
pdfg, err := pdf.NewPDFGenerator()
if err != nil {
return nil, err
}
page := pdf.NewPageReader(&buf)
page.DisableJavascript.Set(true)
page.EnableLocalFileAccess.Set(true)
pdfg.AddPage(page)
pdfg.MarginTop.Set(0)
pdfg.MarginBottom.Set(0)
pdfg.MarginRight.Set(0)
pdfg.MarginLeft.Set(0)
pdfg.PageSize.Set("Letter")
pdfg.ImageDpi.Set(300)
pdfg.ImageQuality.Set(40)
pdfg.LowQuality.Set(true)
err = pdfg.Create()
return pdfg.Bytes(), err
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment