gotak/pdf.go
changeset 0 00371339bbcc
child 10 8dc05ff5dbe2
--- /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
+}