summaryrefslogtreecommitdiff
path: root/vendor/github.com/jung-kurt/gofpdf/contrib/httpimg/httpimg.go
diff options
context:
space:
mode:
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.go43
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)
+}