github.com/signintech/pdft@v0.5.0/render/render.go (about) 1 package render 2 3 import ( 4 "log" 5 6 "github.com/signintech/pdft" 7 ) 8 9 // ErrNotFoundKey key not found 10 // var ErrNotFoundKey = errors.New("not found key") 11 var errNotFoundKey = "Not found key %s" 12 13 // NewRender create new render 14 func NewRender(pdfTmpl string, finfos FieldInfos) (*Render, error) { 15 var rd Render 16 rd.finfoMap = finfos.toMap() 17 err := rd.Open(pdfTmpl) 18 if err != nil { 19 return nil, err 20 } 21 return &rd, nil 22 } 23 24 // Render pdf render 25 type Render struct { 26 pdft.PDFt 27 finfoMap map[string]FieldInfo 28 } 29 30 // Text write text to pdf 31 func (r *Render) Text(key string, text string) error { 32 33 if finfo, ok := r.finfoMap[key]; ok { 34 err := r.SetFont(finfo.Font, "", finfo.Size) 35 if err != nil { 36 return err 37 } 38 39 err = r.Insert(text, finfo.PageNum, finfo.X, finfo.Y, finfo.W, finfo.H, finfo.Align, nil) 40 if err != nil { 41 return err 42 } 43 return nil 44 } 45 46 log.Printf("Warr: Not found key %s", key) 47 return nil 48 } 49 50 // ImgBase64 image base 64 51 func (r *Render) ImgBase64(key string, base64 string) error { 52 //fmt.Printf("ImgBase64 %s\n\n", base64) 53 if finfo, ok := r.finfoMap[key]; ok { 54 err := r.InsertImgBase64(base64, finfo.PageNum, finfo.X, finfo.Y, finfo.W, finfo.H) 55 if err != nil { 56 return err 57 } 58 return nil 59 } 60 log.Printf("Warr: Not found key %s", key) 61 return nil 62 } 63 64 // ShowDesignView for debug 65 func (r *Render) ShowDesignView() { 66 r.ShowCellBorder(true) 67 for key, finfo := range r.finfoMap { 68 r.SetFont(finfo.Font, "", finfo.Size) 69 r.Insert("#"+key, finfo.PageNum, finfo.X, finfo.Y, finfo.W, finfo.H, finfo.Align, nil) 70 } 71 }