From adea43f9f1e4324cde55328c74e0e1a7af9aaf73 Mon Sep 17 00:00:00 2001 From: Kurt Date: Wed, 10 Apr 2019 08:06:56 -0400 Subject: Add watermark example --- fpdf.go | 5 +++++ fpdf_test.go | 41 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 46 insertions(+) diff --git a/fpdf.go b/fpdf.go index adc510b..7294df7 100644 --- a/fpdf.go +++ b/fpdf.go @@ -430,6 +430,11 @@ func (f *Fpdf) SetHeaderFuncMode(fnc func(), homeMode bool) { // headers. fnc will typically be a closure that has access to the Fpdf // instance and other document generation variables. // +// A header is a convenient place to put background content that repeats on +// each page such as a watermark. When this is done, remember to reset the X +// and Y values so the normal content begins where expected. Including a +// watermark on each page is demonstrated in the example for TransformRotate. +// // This method is demonstrated in the example for AddPage(). func (f *Fpdf) SetHeaderFunc(fnc func()) { f.headerFnc = fnc diff --git a/fpdf_test.go b/fpdf_test.go index 53609bf..d894607 100644 --- a/fpdf_test.go +++ b/fpdf_test.go @@ -2476,3 +2476,44 @@ func ExampleFpdf_SetFillColor() { // Output: // Successfully generated pdf/Fpdf_SetFillColor.pdf } + +// ExampleFpdf_TransformRotate demonstrates how to rotate text within a header +// to make a watermark that appears on each page. +func ExampleFpdf_TransformRotate() { + + loremStr := lorem() + "\n\n" + pdf := gofpdf.New("P", "mm", "A4", "") + margin := 25.0 + pdf.SetMargins(margin, margin, margin) + + fontHt := 13.0 + lineHt := pdf.PointToUnitConvert(fontHt) + markFontHt := 50.0 + markLineHt := pdf.PointToUnitConvert(markFontHt) + markY := (297.0 - markLineHt) / 2.0 + ctrX := 210.0 / 2.0 + ctrY := 297.0 / 2.0 + + pdf.SetHeaderFunc(func() { + pdf.SetFont("Arial", "B", markFontHt) + pdf.SetTextColor(206, 216, 232) + pdf.SetXY(margin, markY) + pdf.TransformBegin() + pdf.TransformRotate(45, ctrX, ctrY) + pdf.CellFormat(0, markLineHt, "W A T E R M A R K D E M O", "", 0, "C", false, 0, "") + pdf.TransformEnd() + pdf.SetXY(margin, margin) + }) + + pdf.AddPage() + pdf.SetFont("Arial", "", 8) + for j := 0; j < 25; j++ { + pdf.MultiCell(0, lineHt, loremStr, "", "L", false) + } + + fileStr := example.Filename("Fpdf_RotateText") + err := pdf.OutputFileAndClose(fileStr) + example.Summary(err, fileStr) + // Output: + // Successfully generated pdf/Fpdf_RotateText.pdf +} -- cgit v1.2.1-24-ge1ad