diff options
Diffstat (limited to 'vendor/github.com/jung-kurt/gofpdf/contrib/httpimg/httpimg.go')
| -rw-r--r-- | vendor/github.com/jung-kurt/gofpdf/contrib/httpimg/httpimg.go | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/vendor/github.com/jung-kurt/gofpdf/contrib/httpimg/httpimg.go b/vendor/github.com/jung-kurt/gofpdf/contrib/httpimg/httpimg.go new file mode 100644 index 0000000..7cbf281 --- /dev/null +++ b/vendor/github.com/jung-kurt/gofpdf/contrib/httpimg/httpimg.go @@ -0,0 +1,43 @@ +package httpimg + +import ( + "io" + "net/http" + + "github.com/jung-kurt/gofpdf" +) + +// httpimgPdf is a partial interface that only implements the functions we need +// from the PDF generator to put the HTTP images on the PDF. +type httpimgPdf interface { + GetImageInfo(imageStr string) *gofpdf.ImageInfoType + ImageTypeFromMime(mimeStr string) string + RegisterImageReader(imgName, tp string, r io.Reader) *gofpdf.ImageInfoType + SetError(err error) +} + +// Register registers a HTTP image. Downloading the image from the provided URL +// and adding it to the PDF but not adding it to the page. Use Image() with the +// same URL to add the image to the page. +func Register(f httpimgPdf, urlStr, tp string) (info *gofpdf.ImageInfoType) { + info = f.GetImageInfo(urlStr) + + if info != nil { + return + } + + resp, err := http.Get(urlStr) + + if err != nil { + f.SetError(err) + return + } + + defer resp.Body.Close() + + if tp == "" { + tp = f.ImageTypeFromMime(resp.Header["Content-Type"][0]) + } + + return f.RegisterImageReader(urlStr, tp, resp.Body) +} |
