@@ -291,10 +291,11 @@ func (c *Creator) initContext() {
291291}
292292
293293// NewPage adds a new Page to the Creator and sets as the active Page.
294- func (c * Creator ) NewPage () {
294+ func (c * Creator ) NewPage () * model. PdfPage {
295295 page := c .newPage ()
296296 c .pages = append (c .pages , page )
297297 c .context .Page ++
298+ return page
298299}
299300
300301// AddPage adds the specified page to the creator.
@@ -482,6 +483,8 @@ func (c *Creator) finalize() error {
482483
483484 for idx , page := range c .pages {
484485 c .setActivePage (page )
486+
487+ // Draw page header.
485488 if c .drawHeaderFunc != nil {
486489 // Prepare a block to draw on.
487490 // Header is drawn on the top of the page. Has width of the page, but height limited to
@@ -493,12 +496,14 @@ func (c *Creator) finalize() error {
493496 }
494497 c .drawHeaderFunc (headerBlock , args )
495498 headerBlock .SetPos (0 , 0 )
496- err := c . Draw ( headerBlock )
497- if err != nil {
499+
500+ if err := c . Draw ( headerBlock ); err != nil {
498501 common .Log .Debug ("ERROR: drawing header: %v" , err )
499502 return err
500503 }
501504 }
505+
506+ // Draw page footer.
502507 if c .drawFooterFunc != nil {
503508 // Prepare a block to draw on.
504509 // Footer is drawn on the bottom of the page. Has width of the page, but height limited
@@ -510,25 +515,25 @@ func (c *Creator) finalize() error {
510515 }
511516 c .drawFooterFunc (footerBlock , args )
512517 footerBlock .SetPos (0 , c .pageHeight - footerBlock .height )
513- err := c . Draw ( footerBlock )
514- if err != nil {
518+
519+ if err := c . Draw ( footerBlock ); err != nil {
515520 common .Log .Debug ("ERROR: drawing footer: %v" , err )
516521 return err
517522 }
518523 }
519524
520- // Draw blocks to pages .
525+ // Draw page blocks .
521526 block , ok := c .pageBlocks [page ]
522527 if ! ok {
523- return errors . New ( "could not find page block" )
528+ continue
524529 }
525530 if err := block .drawToPage (page ); err != nil {
531+ common .Log .Debug ("ERROR: drawing page %d blocks: %v" , idx + 1 , err )
526532 return err
527533 }
528534 }
529535
530536 c .finalized = true
531-
532537 return nil
533538}
534539
@@ -600,7 +605,9 @@ func (c *Creator) Draw(d Drawable) error {
600605// Write output of creator to io.Writer interface.
601606func (c * Creator ) Write (ws io.Writer ) error {
602607 if ! c .finalized {
603- c .finalize ()
608+ if err := c .finalize (); err != nil {
609+ return err
610+ }
604611 }
605612
606613 pdfWriter := model .NewPdfWriter ()
0 commit comments