SebastiaanKlippert / go-wkhtmltopdf-lambda

Run wkhtmltopdf in AWS Lambda
MIT License
17 stars 7 forks source link

this lambda works? #1

Open ezequiel-aguilera-uala opened 2 years ago

ezequiel-aguilera-uala commented 2 years ago
Captura de Pantalla 2022-06-22 a la(s) 12 52 01
ezequiel-aguilera-uala commented 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
}
ezequiel-aguilera-uala commented 2 years ago

Build with GOOS=linux GOARCH=amd64 go build main.go

ezequiel-aguilera-uala commented 2 years ago

Works in local, but in aws i get an "error creating PDF generator: wkhtmltopdf not found". Thanks!

SebastiaanKlippert commented 2 years ago

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