From 9e755691ff332200583e17da2a652329ae7bb655 Mon Sep 17 00:00:00 2001 From: Gunnsteinn Hall Date: Wed, 12 Jul 2017 15:47:22 +0000 Subject: [PATCH] Set context when adding a page directly in creator --- pdf/creator/creator.go | 15 ++++++++++++++- pdf/creator/creator_test.go | 2 +- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/pdf/creator/creator.go b/pdf/creator/creator.go index 56fbe031..a4a8bd7b 100644 --- a/pdf/creator/creator.go +++ b/pdf/creator/creator.go @@ -161,8 +161,21 @@ func (c *Creator) NewPage() { c.pages = append(c.pages, page) } -func (c *Creator) AddPage(page *model.PdfPage) { +func (c *Creator) AddPage(page *model.PdfPage) error { + mbox, err := page.GetMediaBox() + if err != nil { + common.Log.Debug("Failed to get page mediabox: %v", err) + return err + } + + c.context.X = mbox.Llx + c.pageMargins.left + c.context.Y = c.pageMargins.top + c.context.PageHeight = mbox.Ury - mbox.Lly + c.context.PageWidth = mbox.Urx - mbox.Llx + c.pages = append(c.pages, page) + + return nil } // Call before writing out. Takes care of adding headers and footers, as well as generating front Page and diff --git a/pdf/creator/creator_test.go b/pdf/creator/creator_test.go index 874d2e43..4749f8a6 100644 --- a/pdf/creator/creator_test.go +++ b/pdf/creator/creator_test.go @@ -931,7 +931,7 @@ func makeQrCodeImage(text string, width float64, oversampling int) (goimage.Imag return nil, err } - pixelWidth := 5 * int(math.Ceil(width)) + pixelWidth := oversampling * int(math.Ceil(width)) qrCode, err = barcode.Scale(qrCode, pixelWidth, pixelWidth) if err != nil { return nil, err