Open ezequiel-aguilera-uala opened 2 years ago
Code modification
package main
import (
"bytes"
"encoding/base64"
"fmt"
"github.com/aws/aws-lambda-go/lambda"
"log"
"os"
"strings"
"github.com/SebastiaanKlippert/go-wkhtmltopdf"
)
func main() {
lambda.Start(handler)
}
func handler() error {
return createPDF()
}
func createPDF() error {
//// Client code
pdfg := wkhtmltopdf.NewPDFPreparer()
//htmlfile, err := ioutil.ReadFile("/Users/ezequielaguilera/Desktop/_/Repos/Pruebas/wkhtmltopdf/loanContractTemplate_arg.html")
//if err != nil {
// log.Fatal(err)
//}
html := "<html>Hi</html>"
// Add to document
pdfg.AddPage(wkhtmltopdf.NewPageReader(strings.NewReader(html)))
//pdfg.AddPage(wkhtmltopdf.NewPageReader(bytes.NewReader(htmlfile)))
pdfg.Dpi.Set(600)
// The contents of htmlsimple.html are saved as base64 string in the JSON file
jb, err := pdfg.ToJSON()
if err != nil {
log.Fatal(err)
}
fmt.Println("jblen: ", len(jb))
// make sure we look for the included wkhtmltopdf binary
err = os.Setenv("WKHTMLTOPDF_PATH", os.Getenv("LAMBDA_TASK_ROOT"))
if err != nil {
return err
}
// create PDF generator
pdfgFromJSON, err := wkhtmltopdf.NewPDFGeneratorFromJSON(bytes.NewReader(jb))
if err != nil {
return err
}
// create PDF
err = pdfgFromJSON.Create()
if err != nil {
return err
}
fmt.Println("jblen: ", len(pdfgFromJSON.Bytes()))
fmt.Println("jblen: ", base64.StdEncoding.EncodeToString(pdfgFromJSON.Bytes()))
// write PDF to same filename with .pdf added
return nil
}
Build with GOOS=linux GOARCH=amd64 go build main.go
Works in local, but in aws i get an "error creating PDF generator: wkhtmltopdf not found". Thanks!
Are you deploying as a ZIP file and is wkhtmltopdf in the root of the zip file as well?
Make sure it is executable before zipping it (chmod +x wkhtmltopdf
).