From 03b1cc4baaf3f7c9ae441b711e18fdd5671a5dd4 Mon Sep 17 00:00:00 2001 From: matthias Date: Thu, 15 Aug 2019 17:27:56 +0200 Subject: add simple example --- contrib/gofpdi/gofpdi_test.go | 52 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 contrib/gofpdi/gofpdi_test.go (limited to 'contrib/gofpdi/gofpdi_test.go') diff --git a/contrib/gofpdi/gofpdi_test.go b/contrib/gofpdi/gofpdi_test.go new file mode 100644 index 0000000..1ecc5ca --- /dev/null +++ b/contrib/gofpdi/gofpdi_test.go @@ -0,0 +1,52 @@ +package gofpdi + +import ( + "bytes" + "github.com/jung-kurt/gofpdf" + "github.com/jung-kurt/gofpdf/internal/example" + "io" +) + +func ExampleGofpdiImporter() { + // create new pdf + pdf := gofpdf.New("P", "pt", "A4", "") + + // for testing purposes, get an arbitrary template pdf as stream + rs, _ := getTemplatePdf() + + // create a new Importer instance + imp := NewImporter() + + // import first page and determine page sizes + tpl := imp.ImportPageFromStream(pdf, &rs, 1, "/MediaBox") + pageSizes := imp.GetPageSizes() + nrPages := len(imp.GetPageSizes()) + + // add all pages from template pdf + for i := 1; i <= nrPages; i++ { + pdf.AddPage() + if i > 1 { + tpl = imp.ImportPageFromStream(pdf, &rs, i, "/MediaBox") + } + imp.UseImportedTemplate(pdf, tpl, 0, 0, pageSizes[i]["/MediaBox"]["w"], pageSizes[i]["/MediaBox"]["h"]) + } + + // output + fileStr := example.Filename("contrib_gofpdi_Importer") + err := pdf.OutputFileAndClose(fileStr) + example.Summary(err, fileStr) + // Output: + // Successfully generated ../../pdf/contrib_gofpdi_Importer.pdf +} + +func getTemplatePdf() (io.ReadSeeker, error) { + tpdf := gofpdf.New("P", "pt", "A4", "") + tpdf.AddPage() + tpdf.SetFont("Arial", "", 12) + tpdf.Text(20, 20, "Example Page 1") + tpdf.AddPage() + tpdf.Text(20, 20, "Example Page 2") + tbuf := bytes.Buffer{} + err := tpdf.Output(&tbuf) + return bytes.NewReader(tbuf.Bytes()), err +} -- cgit v1.2.1-24-ge1ad From afaa377e877515c31a941b4c88953e20ead17255 Mon Sep 17 00:00:00 2001 From: matthias Date: Thu, 15 Aug 2019 17:33:26 +0200 Subject: add simple test for data race detection --- contrib/gofpdi/gofpdi_test.go | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) (limited to 'contrib/gofpdi/gofpdi_test.go') diff --git a/contrib/gofpdi/gofpdi_test.go b/contrib/gofpdi/gofpdi_test.go index 1ecc5ca..77db338 100644 --- a/contrib/gofpdi/gofpdi_test.go +++ b/contrib/gofpdi/gofpdi_test.go @@ -5,6 +5,8 @@ import ( "github.com/jung-kurt/gofpdf" "github.com/jung-kurt/gofpdf/internal/example" "io" + "sync" + "testing" ) func ExampleGofpdiImporter() { @@ -39,6 +41,29 @@ func ExampleGofpdiImporter() { // Successfully generated ../../pdf/contrib_gofpdi_Importer.pdf } +func TestGofpdiConcurrent(t *testing.T) { + wg := sync.WaitGroup{} + for i := 0; i < 100; i++ { + wg.Add(1) + go func() { + defer wg.Done() + pdf := gofpdf.New("P", "mm", "A4", "") + rs, _ := getTemplatePdf() + imp := NewImporter() + tpl := imp.ImportPageFromStream(pdf, &rs, 1, "/MediaBox") + pdf.AddPage() + tpl = imp.ImportPageFromStream(pdf, &rs, 1, "/MediaBox") + imp.UseImportedTemplate(pdf, tpl, 0, 0, 210.0, 297.0) + // write to bytes buffer + buf := bytes.Buffer{} + if err := pdf.Output(&buf); err != nil { + t.Fail() + } + }() + } + wg.Wait() +} + func getTemplatePdf() (io.ReadSeeker, error) { tpdf := gofpdf.New("P", "pt", "A4", "") tpdf.AddPage() -- cgit v1.2.1-24-ge1ad From dab6c0551d4d91973e1bb91341619885e48797a9 Mon Sep 17 00:00:00 2001 From: matthias Date: Thu, 15 Aug 2019 17:55:42 +0200 Subject: fix checks --- contrib/gofpdi/gofpdi_test.go | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) (limited to 'contrib/gofpdi/gofpdi_test.go') diff --git a/contrib/gofpdi/gofpdi_test.go b/contrib/gofpdi/gofpdi_test.go index 77db338..70ef6cc 100644 --- a/contrib/gofpdi/gofpdi_test.go +++ b/contrib/gofpdi/gofpdi_test.go @@ -9,7 +9,7 @@ import ( "testing" ) -func ExampleGofpdiImporter() { +func ExampleNewImporter() { // create new pdf pdf := gofpdf.New("P", "pt", "A4", "") @@ -48,11 +48,10 @@ func TestGofpdiConcurrent(t *testing.T) { go func() { defer wg.Done() pdf := gofpdf.New("P", "mm", "A4", "") + pdf.AddPage() rs, _ := getTemplatePdf() imp := NewImporter() tpl := imp.ImportPageFromStream(pdf, &rs, 1, "/MediaBox") - pdf.AddPage() - tpl = imp.ImportPageFromStream(pdf, &rs, 1, "/MediaBox") imp.UseImportedTemplate(pdf, tpl, 0, 0, 210.0, 297.0) // write to bytes buffer buf := bytes.Buffer{} -- cgit v1.2.1-24-ge1ad