diff options
Diffstat (limited to 'contrib')
-rw-r--r-- | contrib/fhttp/fhttp.go | 26 | ||||
-rw-r--r-- | contrib/fhttp/fhttp_test.go | 43 | ||||
-rw-r--r-- | contrib/fhttp/pdf/.gitignore | 1 | ||||
-rw-r--r-- | contrib/fhttp/pdf/.gitkeep | 0 |
4 files changed, 70 insertions, 0 deletions
diff --git a/contrib/fhttp/fhttp.go b/contrib/fhttp/fhttp.go new file mode 100644 index 0000000..119e30e --- /dev/null +++ b/contrib/fhttp/fhttp.go @@ -0,0 +1,26 @@ +package fhttp + +import ( + "github.com/jung-kurt/gofpdf" + "net/http" +) + +// RegisterRemoteImage registers a remote 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 RegisterRemoteImage(f *gofpdf.Fpdf, urlStr, tp string) (info *gofpdf.ImageInfoType) { + 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) +} diff --git a/contrib/fhttp/fhttp_test.go b/contrib/fhttp/fhttp_test.go new file mode 100644 index 0000000..57bf175 --- /dev/null +++ b/contrib/fhttp/fhttp_test.go @@ -0,0 +1,43 @@ +package fhttp_test + +import ( + "fmt" + "github.com/jung-kurt/gofpdf" + "github.com/jung-kurt/gofpdf/contrib/fhttp" + "path/filepath" +) + +const ( + cnGofpdfDir = "./" + cnExampleDir = cnGofpdfDir + "/pdf" +) + +func exampleFilename(baseStr string) string { + return filepath.Join(cnExampleDir, baseStr+".pdf") +} + +func summary(err error, fileStr string) { + if err == nil { + fileStr = filepath.ToSlash(fileStr) + fmt.Printf("Successfully generated %s\n", fileStr) + } else { + fmt.Println(err) + } +} + +func ExampleFpdf_AddRemoteImage() { + pdf := gofpdf.New("", "", "", "") + pdf.SetFont("Helvetica", "", 12) + pdf.SetFillColor(200, 200, 220) + pdf.AddPage() + + url := "https://github.com/jung-kurt/gofpdf/raw/master/image/logo_gofpdf.jpg?raw=true" + fhttp.RegisterRemoteImage(pdf, url, "") + pdf.Image(url, 100, 100, 20, 20, false, "", 0, "") + + fileStr := exampleFilename("Fpdf_AddRemoteImage") + err := pdf.OutputFileAndClose(fileStr) + summary(err, fileStr) + // Output: + // Successfully generated pdf/Fpdf_AddRemoteImage.pdf +} diff --git a/contrib/fhttp/pdf/.gitignore b/contrib/fhttp/pdf/.gitignore new file mode 100644 index 0000000..a136337 --- /dev/null +++ b/contrib/fhttp/pdf/.gitignore @@ -0,0 +1 @@ +*.pdf diff --git a/contrib/fhttp/pdf/.gitkeep b/contrib/fhttp/pdf/.gitkeep new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/contrib/fhttp/pdf/.gitkeep |