equal
deleted
inserted
replaced
|
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 } |