gotak/pdf.go
changeset 0 00371339bbcc
child 10 8dc05ff5dbe2
equal deleted inserted replaced
-1:000000000000 0:00371339bbcc
       
     1 package main
       
     2 
       
     3 import (
       
     4 	"fmt"
       
     5 
       
     6 	"github.com/jung-kurt/gofpdf"
       
     7 	"github.com/pkg/errors"
       
     8 
       
     9 	"mikael/takuzu"
       
    10 )
       
    11 
       
    12 func tak2pdf(takuzu *takuzu.Takuzu, pdfFileName string) error {
       
    13 
       
    14 	if pdfFileName == "" {
       
    15 		return errors.New("no PDF file name")
       
    16 	}
       
    17 
       
    18 	size := takuzu.Size
       
    19 
       
    20 	pdf := gofpdf.New("P", "mm", "A4", "")
       
    21 	pdf.SetFont("Arial", "", 14)
       
    22 
       
    23 	basicTable := func() {
       
    24 
       
    25 		for ln, l := range takuzu.Board {
       
    26 			for cn, cell := range l {
       
    27 				border := "" // empty, "1", "L", "T", "R" and "B"
       
    28 				if ln == 0 {
       
    29 					border += "T"
       
    30 				}
       
    31 				if cn == 0 {
       
    32 					border += "L"
       
    33 				}
       
    34 				if ln+1 == size {
       
    35 					border += "B"
       
    36 				}
       
    37 				if cn+1 == size {
       
    38 					border += "R"
       
    39 				}
       
    40 				align := "CM" // horiz=Center vert=Middle
       
    41 				if cell.Defined {
       
    42 					pdf.CellFormat(8, 8, fmt.Sprint(cell.Value), border, 0, align, false, 0, "")
       
    43 				} else {
       
    44 					pdf.CellFormat(8, 8, ".", border, 0, align, false, 0, "")
       
    45 				}
       
    46 			}
       
    47 			pdf.Ln(-1)
       
    48 		}
       
    49 	}
       
    50 
       
    51 	pdf.AddPage()
       
    52 	basicTable()
       
    53 	if err := pdf.OutputFileAndClose(pdfFileName); err != nil {
       
    54 		return err
       
    55 	}
       
    56 
       
    57 	return nil
       
    58 }