diff -r 000000000000 -r 00371339bbcc gotak/pdf.go --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gotak/pdf.go Fri Sep 02 21:50:48 2016 +0200 @@ -0,0 +1,58 @@ +package main + +import ( + "fmt" + + "github.com/jung-kurt/gofpdf" + "github.com/pkg/errors" + + "mikael/takuzu" +) + +func tak2pdf(takuzu *takuzu.Takuzu, pdfFileName string) error { + + if pdfFileName == "" { + return errors.New("no PDF file name") + } + + size := takuzu.Size + + pdf := gofpdf.New("P", "mm", "A4", "") + pdf.SetFont("Arial", "", 14) + + basicTable := func() { + + for ln, l := range takuzu.Board { + for cn, cell := range l { + border := "" // empty, "1", "L", "T", "R" and "B" + if ln == 0 { + border += "T" + } + if cn == 0 { + border += "L" + } + if ln+1 == size { + border += "B" + } + if cn+1 == size { + border += "R" + } + align := "CM" // horiz=Center vert=Middle + if cell.Defined { + pdf.CellFormat(8, 8, fmt.Sprint(cell.Value), border, 0, align, false, 0, "") + } else { + pdf.CellFormat(8, 8, ".", border, 0, align, false, 0, "") + } + } + pdf.Ln(-1) + } + } + + pdf.AddPage() + basicTable() + if err := pdf.OutputFileAndClose(pdfFileName); err != nil { + return err + } + + return nil +}