summaryrefslogtreecommitdiff
path: root/template_impl.go
diff options
context:
space:
mode:
authorPaul Montag <pmontag@iseeme.com>2018-10-31 19:56:01 -0500
committerPaul Montag <pmontag@iseeme.com>2018-10-31 19:56:01 -0500
commitbb287515d3b5c5b4ca7665a64a9224e8b6038804 (patch)
tree1fda5188725bdb5790afd8019b83c97b1802b3c6 /template_impl.go
parent6421d61dcdc4da19badab16dc2a8af331c4fbbeb (diff)
Added Ability to turn template into a byte string
Diffstat (limited to 'template_impl.go')
-rw-r--r--template_impl.go59
1 files changed, 59 insertions, 0 deletions
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.