From bb287515d3b5c5b4ca7665a64a9224e8b6038804 Mon Sep 17 00:00:00 2001 From: Paul Montag Date: Wed, 31 Oct 2018 19:56:01 -0500 Subject: Added Ability to turn template into a byte string --- template_impl.go | 59 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) (limited to 'template_impl.go') diff --git a/template_impl.go b/template_impl.go index 01bb040..9e5d496 100644 --- a/template_impl.go +++ b/template_impl.go @@ -1,5 +1,10 @@ package gofpdf +import ( + "bytes" + "encoding/gob" +) + /* * Copyright (c) 2015 Kurt Jung (Gmail: kurt.w.jung), * Marcus Downing, Jan Slabon (Setasign) @@ -80,6 +85,60 @@ func (t *FpdfTpl) Templates() []Template { return t.templates } +func (t *FpdfTpl) GobEncode() ([]byte, error) { + w := new(bytes.Buffer) + encoder := gob.NewEncoder(w) + + err := encoder.Encode(t.id) + if err == nil { + err = encoder.Encode(t.corner) + } + if err == nil { + err = encoder.Encode(t.size) + } + if err == nil { + err = encoder.Encode(t.bytes) + } + if err == nil { + err = encoder.Encode(t.images) + } + if err == nil { + err = encoder.Encode(t.templates) + } + + return w.Bytes(), err +} + +func (t *FpdfTpl) GobDecode(buf []byte) error { + r := bytes.NewBuffer(buf) + decoder := gob.NewDecoder(r) + + err := decoder.Decode(&t.id) + if err == nil { + err = decoder.Decode(&t.corner) + } + if err == nil { + err = decoder.Decode(&t.size) + } + if err == nil { + err = decoder.Decode(&t.bytes) + } + if err == nil { + err = decoder.Decode(&t.images) + } + if err == nil { + templates := make([]*FpdfTpl, 0) + err = decoder.Decode(&templates) + t.templates = make([]Template, len(templates)) + + for x := 0; x < len(templates); x++ { + t.templates[x] = templates[x] + } + } + + return err +} + // Tpl is an Fpdf used for writing a template. It has most of the facilities of // an Fpdf, but cannot add more pages. Tpl is used directly only during the // limited time a template is writable. -- cgit v1.2.1-24-ge1ad