diff options
Diffstat (limited to 'contrib/tiff')
| -rw-r--r-- | contrib/tiff/tiff.go | 71 | ||||
| -rw-r--r-- | contrib/tiff/tiff_test.go | 22 | 
2 files changed, 93 insertions, 0 deletions
| diff --git a/contrib/tiff/tiff.go b/contrib/tiff/tiff.go new file mode 100644 index 0000000..c2880d6 --- /dev/null +++ b/contrib/tiff/tiff.go @@ -0,0 +1,71 @@ +/* + * Copyright (c) 2016 Kurt Jung (Gmail: kurt.w.jung) + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +package tiff + +import ( +	"bytes" +	"fmt" +	"image" +	"image/png" +	"io" +	"os" + +	"github.com/jung-kurt/gofpdf" +	"golang.org/x/image/tiff" +) + +// RegisterReader ... +func RegisterReader(fpdf *gofpdf.Fpdf, imgName string, options gofpdf.ImageOptions, r io.Reader) (info *gofpdf.ImageInfoType) { +	var err error +	var img image.Image +	var buf bytes.Buffer +	if fpdf.Ok() { +		if options.ImageType == "tiff" || options.ImageType == "tif" { +			img, err = tiff.Decode(r) +			if err == nil { +				err = png.Encode(&buf, img) +				if err == nil { +					options.ImageType = "png" +					info = fpdf.RegisterImageOptionsReader(imgName, options, &buf) +				} +			} +		} else { +			err = fmt.Errorf("expecting \"tiff\" or \"tif\" as image type, got \"%s\"", options.ImageType) +		} +		if err != nil { +			fpdf.SetError(err) +		} +	} +	return +} + +// RegisterFile ... +func RegisterFile(fpdf *gofpdf.Fpdf, imgName string, options gofpdf.ImageOptions, tiffFileStr string) (info *gofpdf.ImageInfoType) { +	var f *os.File +	var err error + +	if fpdf.Ok() { +		f, err = os.Open(tiffFileStr) +		if err == nil { +			info = RegisterReader(fpdf, imgName, options, f) +			f.Close() +		} else { +			fpdf.SetError(err) +		} +	} +	return +} diff --git a/contrib/tiff/tiff_test.go b/contrib/tiff/tiff_test.go new file mode 100644 index 0000000..28163a0 --- /dev/null +++ b/contrib/tiff/tiff_test.go @@ -0,0 +1,22 @@ +package tiff_test + +import ( +	"github.com/jung-kurt/gofpdf" +	"github.com/jung-kurt/gofpdf/contrib/tiff" +	"github.com/jung-kurt/gofpdf/internal/example" +) + +func ExampleTiff() { +	pdf := gofpdf.New("L", "mm", "A4", "") +	pdf.SetFont("Helvetica", "", 12) +	pdf.SetFillColor(200, 200, 220) +	pdf.AddPageFormat("L", gofpdf.SizeType{Wd: 200, Ht: 200}) +	opt := gofpdf.ImageOptions{ImageType: "tiff", ReadDpi: false} +	_ = tiff.RegisterFile(pdf, "sample", opt, "../../image/golang-gopher.tiff") +	pdf.Image("sample", 0, 0, 200, 200, false, "", 0, "") +	fileStr := example.Filename("Fpdf_Contrib_Tiff") +	err := pdf.OutputFileAndClose(fileStr) +	example.Summary(err, fileStr) +	// Output: +	// Successfully generated ../../pdf/Fpdf_Contrib_Tiff.pdf +} | 
