From 55370a856fb5610bafac951f72016f2c94f12800 Mon Sep 17 00:00:00 2001 From: Jelmer Snoeck Date: Wed, 19 Aug 2015 19:13:07 +0100 Subject: Fhttp: add RegisterRemoteImage functionality. This is a wrapper around manually having to download the image and registering it. It registers an image based on it's URL, it will download that image and add it to the PDF. It will however not add it immediately to the page. This is done by calling `Image()` with the same URL. --- contrib/fhttp/fhttp.go | 26 ++++++++++++++++++++++++++ contrib/fhttp/fhttp_test.go | 43 +++++++++++++++++++++++++++++++++++++++++++ contrib/fhttp/pdf/.gitignore | 1 + contrib/fhttp/pdf/.gitkeep | 0 4 files changed, 70 insertions(+) create mode 100644 contrib/fhttp/fhttp.go create mode 100644 contrib/fhttp/fhttp_test.go create mode 100644 contrib/fhttp/pdf/.gitignore create mode 100644 contrib/fhttp/pdf/.gitkeep 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 -- cgit v1.2.1-24-ge1ad From 4258c2e0e7b3f57a5913e2983e316ad2b3e079a5 Mon Sep 17 00:00:00 2001 From: Jelmer Snoeck Date: Mon, 24 Aug 2015 22:39:45 +0100 Subject: Use `GetImageInfo` to see if the image is already registered. --- contrib/fhttp/fhttp.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/contrib/fhttp/fhttp.go b/contrib/fhttp/fhttp.go index 119e30e..cf13b25 100644 --- a/contrib/fhttp/fhttp.go +++ b/contrib/fhttp/fhttp.go @@ -9,6 +9,12 @@ import ( // 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) { + info = f.GetImageInfo(urlStr) + + if info != nil { + return + } + resp, err := http.Get(urlStr) if err != nil { -- cgit v1.2.1-24-ge1ad From 66de656c58127811f119b9b8d34022438906d5de Mon Sep 17 00:00:00 2001 From: Jelmer Snoeck Date: Mon, 24 Aug 2015 22:42:03 +0100 Subject: Use RegisterHttpImage instead of RegisterRemoteImage. Remote can mean several things, HTTP is more specific and matches the actual implementation. --- contrib/fhttp/fhttp.go | 4 ++-- contrib/fhttp/fhttp_test.go | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/contrib/fhttp/fhttp.go b/contrib/fhttp/fhttp.go index cf13b25..8887fbc 100644 --- a/contrib/fhttp/fhttp.go +++ b/contrib/fhttp/fhttp.go @@ -5,10 +5,10 @@ import ( "net/http" ) -// RegisterRemoteImage registers a remote image. Downloading the image from the +// RegisterHttpImage 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 RegisterRemoteImage(f *gofpdf.Fpdf, urlStr, tp string) (info *gofpdf.ImageInfoType) { +func RegisterHttpImage(f *gofpdf.Fpdf, urlStr, tp string) (info *gofpdf.ImageInfoType) { info = f.GetImageInfo(urlStr) if info != nil { diff --git a/contrib/fhttp/fhttp_test.go b/contrib/fhttp/fhttp_test.go index 57bf175..e09328a 100644 --- a/contrib/fhttp/fhttp_test.go +++ b/contrib/fhttp/fhttp_test.go @@ -25,19 +25,19 @@ func summary(err error, fileStr string) { } } -func ExampleFpdf_AddRemoteImage() { +func ExampleFpdf_AddHttpImage() { 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, "") + fhttp.RegisterHttpImage(pdf, url, "") pdf.Image(url, 100, 100, 20, 20, false, "", 0, "") - fileStr := exampleFilename("Fpdf_AddRemoteImage") + fileStr := exampleFilename("Fpdf_AddHttpImage") err := pdf.OutputFileAndClose(fileStr) summary(err, fileStr) // Output: - // Successfully generated pdf/Fpdf_AddRemoteImage.pdf + // Successfully generated pdf/Fpdf_AddHttpImage.pdf } -- cgit v1.2.1-24-ge1ad From a1dcf58b5248a95377100a535eb7d20f708cf6a0 Mon Sep 17 00:00:00 2001 From: Jelmer Snoeck Date: Wed, 26 Aug 2015 19:43:02 +0100 Subject: Httpimg: rename package. --- contrib/fhttp/fhttp.go | 32 ------------------------------ contrib/fhttp/fhttp_test.go | 43 ----------------------------------------- contrib/fhttp/pdf/.gitignore | 1 - contrib/fhttp/pdf/.gitkeep | 0 contrib/httpimg/httpimg.go | 32 ++++++++++++++++++++++++++++++ contrib/httpimg/httpimg_test.go | 43 +++++++++++++++++++++++++++++++++++++++++ contrib/httpimg/pdf/.gitignore | 1 + contrib/httpimg/pdf/.gitkeep | 0 8 files changed, 76 insertions(+), 76 deletions(-) delete mode 100644 contrib/fhttp/fhttp.go delete mode 100644 contrib/fhttp/fhttp_test.go delete mode 100644 contrib/fhttp/pdf/.gitignore delete mode 100644 contrib/fhttp/pdf/.gitkeep create mode 100644 contrib/httpimg/httpimg.go create mode 100644 contrib/httpimg/httpimg_test.go create mode 100644 contrib/httpimg/pdf/.gitignore create mode 100644 contrib/httpimg/pdf/.gitkeep diff --git a/contrib/fhttp/fhttp.go b/contrib/fhttp/fhttp.go deleted file mode 100644 index 8887fbc..0000000 --- a/contrib/fhttp/fhttp.go +++ /dev/null @@ -1,32 +0,0 @@ -package fhttp - -import ( - "github.com/jung-kurt/gofpdf" - "net/http" -) - -// RegisterHttpImage 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 RegisterHttpImage(f *gofpdf.Fpdf, 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) -} diff --git a/contrib/fhttp/fhttp_test.go b/contrib/fhttp/fhttp_test.go deleted file mode 100644 index e09328a..0000000 --- a/contrib/fhttp/fhttp_test.go +++ /dev/null @@ -1,43 +0,0 @@ -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_AddHttpImage() { - 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.RegisterHttpImage(pdf, url, "") - pdf.Image(url, 100, 100, 20, 20, false, "", 0, "") - - fileStr := exampleFilename("Fpdf_AddHttpImage") - err := pdf.OutputFileAndClose(fileStr) - summary(err, fileStr) - // Output: - // Successfully generated pdf/Fpdf_AddHttpImage.pdf -} diff --git a/contrib/fhttp/pdf/.gitignore b/contrib/fhttp/pdf/.gitignore deleted file mode 100644 index a136337..0000000 --- a/contrib/fhttp/pdf/.gitignore +++ /dev/null @@ -1 +0,0 @@ -*.pdf diff --git a/contrib/fhttp/pdf/.gitkeep b/contrib/fhttp/pdf/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/contrib/httpimg/httpimg.go b/contrib/httpimg/httpimg.go new file mode 100644 index 0000000..6025469 --- /dev/null +++ b/contrib/httpimg/httpimg.go @@ -0,0 +1,32 @@ +package httpimg + +import ( + "github.com/jung-kurt/gofpdf" + "net/http" +) + +// RegisterHttpImage 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 RegisterHttpImage(f *gofpdf.Fpdf, 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) +} diff --git a/contrib/httpimg/httpimg_test.go b/contrib/httpimg/httpimg_test.go new file mode 100644 index 0000000..d1b97bb --- /dev/null +++ b/contrib/httpimg/httpimg_test.go @@ -0,0 +1,43 @@ +package httpimg_test + +import ( + "fmt" + "github.com/jung-kurt/gofpdf" + "github.com/jung-kurt/gofpdf/contrib/httpimg" + "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_AddHttpImage() { + 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" + httpimg.RegisterHttpImage(pdf, url, "") + pdf.Image(url, 100, 100, 20, 20, false, "", 0, "") + + fileStr := exampleFilename("Fpdf_AddHttpImage") + err := pdf.OutputFileAndClose(fileStr) + summary(err, fileStr) + // Output: + // Successfully generated pdf/Fpdf_AddHttpImage.pdf +} diff --git a/contrib/httpimg/pdf/.gitignore b/contrib/httpimg/pdf/.gitignore new file mode 100644 index 0000000..a136337 --- /dev/null +++ b/contrib/httpimg/pdf/.gitignore @@ -0,0 +1 @@ +*.pdf diff --git a/contrib/httpimg/pdf/.gitkeep b/contrib/httpimg/pdf/.gitkeep new file mode 100644 index 0000000..e69de29 -- cgit v1.2.1-24-ge1ad From 74253e5c9ca7edeee98bcf4b38d9ef1d00fe7a0e Mon Sep 17 00:00:00 2001 From: Jelmer Snoeck Date: Wed, 26 Aug 2015 19:44:21 +0100 Subject: HttpImg: use `Register` method. By changing the name, we can use a uniform name across several packages. --- contrib/httpimg/httpimg.go | 8 ++++---- contrib/httpimg/httpimg_test.go | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/contrib/httpimg/httpimg.go b/contrib/httpimg/httpimg.go index 6025469..10afcc8 100644 --- a/contrib/httpimg/httpimg.go +++ b/contrib/httpimg/httpimg.go @@ -5,10 +5,10 @@ import ( "net/http" ) -// RegisterHttpImage 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 RegisterHttpImage(f *gofpdf.Fpdf, urlStr, tp string) (info *gofpdf.ImageInfoType) { +// 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 *gofpdf.Fpdf, urlStr, tp string) (info *gofpdf.ImageInfoType) { info = f.GetImageInfo(urlStr) if info != nil { diff --git a/contrib/httpimg/httpimg_test.go b/contrib/httpimg/httpimg_test.go index d1b97bb..cc007c6 100644 --- a/contrib/httpimg/httpimg_test.go +++ b/contrib/httpimg/httpimg_test.go @@ -32,7 +32,7 @@ func ExampleFpdf_AddHttpImage() { pdf.AddPage() url := "https://github.com/jung-kurt/gofpdf/raw/master/image/logo_gofpdf.jpg?raw=true" - httpimg.RegisterHttpImage(pdf, url, "") + httpimg.Register(pdf, url, "") pdf.Image(url, 100, 100, 20, 20, false, "", 0, "") fileStr := exampleFilename("Fpdf_AddHttpImage") -- cgit v1.2.1-24-ge1ad From 211fa5aeadb5acf6975059d76d9a05be9335e7a6 Mon Sep 17 00:00:00 2001 From: Jelmer Snoeck Date: Wed, 26 Aug 2015 20:40:33 +0100 Subject: Examples: rename function/file for clarification. --- contrib/httpimg/httpimg_test.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/contrib/httpimg/httpimg_test.go b/contrib/httpimg/httpimg_test.go index cc007c6..3cd4218 100644 --- a/contrib/httpimg/httpimg_test.go +++ b/contrib/httpimg/httpimg_test.go @@ -25,7 +25,7 @@ func summary(err error, fileStr string) { } } -func ExampleFpdf_AddHttpImage() { +func ExampleRegister() { pdf := gofpdf.New("", "", "", "") pdf.SetFont("Helvetica", "", 12) pdf.SetFillColor(200, 200, 220) @@ -35,9 +35,9 @@ func ExampleFpdf_AddHttpImage() { httpimg.Register(pdf, url, "") pdf.Image(url, 100, 100, 20, 20, false, "", 0, "") - fileStr := exampleFilename("Fpdf_AddHttpImage") + fileStr := exampleFilename("contrib_httpimg_Register") err := pdf.OutputFileAndClose(fileStr) summary(err, fileStr) // Output: - // Successfully generated pdf/Fpdf_AddHttpImage.pdf + // Successfully generated pdf/contrib_httpimg_Register.pdf } -- cgit v1.2.1-24-ge1ad From 38c257b759987e1d7660b8fa3d62103bd99a76ff Mon Sep 17 00:00:00 2001 From: Jelmer Snoeck Date: Wed, 26 Aug 2015 20:41:30 +0100 Subject: Httpimg: cleanup pdf path on with tests. --- contrib/httpimg/httpimg_test.go | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/contrib/httpimg/httpimg_test.go b/contrib/httpimg/httpimg_test.go index 3cd4218..8639bda 100644 --- a/contrib/httpimg/httpimg_test.go +++ b/contrib/httpimg/httpimg_test.go @@ -4,6 +4,7 @@ import ( "fmt" "github.com/jung-kurt/gofpdf" "github.com/jung-kurt/gofpdf/contrib/httpimg" + "os" "path/filepath" ) @@ -12,6 +13,20 @@ const ( cnExampleDir = cnGofpdfDir + "/pdf" ) +func init() { + cleanup() +} + +func cleanup() { + filepath.Walk(cnExampleDir, + func(path string, info os.FileInfo, err error) (reterr error) { + if path[len(path)-4:] == ".pdf" { + os.Remove(path) + } + return + }) +} + func exampleFilename(baseStr string) string { return filepath.Join(cnExampleDir, baseStr+".pdf") } -- cgit v1.2.1-24-ge1ad From a213cdab820620d8ce3df2fc63a84a8e97eaf251 Mon Sep 17 00:00:00 2001 From: Jelmer Snoeck Date: Thu, 27 Aug 2015 08:21:52 +0100 Subject: Use internal example package for testing. --- contrib/httpimg/httpimg_test.go | 42 ++++------------------------------------- 1 file changed, 4 insertions(+), 38 deletions(-) diff --git a/contrib/httpimg/httpimg_test.go b/contrib/httpimg/httpimg_test.go index 8639bda..cf6e8d1 100644 --- a/contrib/httpimg/httpimg_test.go +++ b/contrib/httpimg/httpimg_test.go @@ -1,45 +1,11 @@ package httpimg_test import ( - "fmt" "github.com/jung-kurt/gofpdf" "github.com/jung-kurt/gofpdf/contrib/httpimg" - "os" - "path/filepath" + "github.com/jung-kurt/gofpdf/internal/example" ) -const ( - cnGofpdfDir = "./" - cnExampleDir = cnGofpdfDir + "/pdf" -) - -func init() { - cleanup() -} - -func cleanup() { - filepath.Walk(cnExampleDir, - func(path string, info os.FileInfo, err error) (reterr error) { - if path[len(path)-4:] == ".pdf" { - os.Remove(path) - } - return - }) -} - -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 ExampleRegister() { pdf := gofpdf.New("", "", "", "") pdf.SetFont("Helvetica", "", 12) @@ -50,9 +16,9 @@ func ExampleRegister() { httpimg.Register(pdf, url, "") pdf.Image(url, 100, 100, 20, 20, false, "", 0, "") - fileStr := exampleFilename("contrib_httpimg_Register") + fileStr := example.Filename("contrib_httpimg_Register") err := pdf.OutputFileAndClose(fileStr) - summary(err, fileStr) + example.Summary(err, fileStr) // Output: - // Successfully generated pdf/contrib_httpimg_Register.pdf + // Successfully generated ../../pdf/contrib_httpimg_Register.pdf } -- cgit v1.2.1-24-ge1ad From 2da5422f1ef9de941136c24d597bbabe081e5b93 Mon Sep 17 00:00:00 2001 From: Jelmer Snoeck Date: Thu, 27 Aug 2015 08:24:31 +0100 Subject: Httpimg: remove pdf folder. This will now be generated in the main pdf folder (`gofpdf/pdf`). --- contrib/httpimg/pdf/.gitignore | 1 - contrib/httpimg/pdf/.gitkeep | 0 2 files changed, 1 deletion(-) delete mode 100644 contrib/httpimg/pdf/.gitignore delete mode 100644 contrib/httpimg/pdf/.gitkeep diff --git a/contrib/httpimg/pdf/.gitignore b/contrib/httpimg/pdf/.gitignore deleted file mode 100644 index a136337..0000000 --- a/contrib/httpimg/pdf/.gitignore +++ /dev/null @@ -1 +0,0 @@ -*.pdf diff --git a/contrib/httpimg/pdf/.gitkeep b/contrib/httpimg/pdf/.gitkeep deleted file mode 100644 index e69de29..0000000 -- cgit v1.2.1-24-ge1ad