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  }