author | Mikael Berthe <mikael@lilotux.net> |
Sat, 07 Apr 2018 22:28:50 +0200 | |
changeset 13 | 923ce3e425cd |
parent 11 | cd1296df76f1 |
child 15 | eac7d78ff641 |
permissions | -rw-r--r-- |
10 | 1 |
// Copyright (C) 2016 Mikael Berthe <mikael@lilotux.net>. All rights reserved. |
2 |
// Use of this source code is governed by the MIT license, |
|
3 |
// which can be found in the LICENSE file. |
|
4 |
||
0 | 5 |
package main |
6 |
||
7 |
import ( |
|
8 |
"fmt" |
|
9 |
||
10 |
"github.com/jung-kurt/gofpdf" |
|
11 |
"github.com/pkg/errors" |
|
12 |
||
11
cd1296df76f1
Switch to public repositories
Mikael Berthe <mikael@lilotux.net>
parents:
10
diff
changeset
|
13 |
"hg.lilotux.net/golang/mikael/takuzu" |
0 | 14 |
) |
15 |
||
16 |
func tak2pdf(takuzu *takuzu.Takuzu, pdfFileName string) error { |
|
17 |
||
18 |
if pdfFileName == "" { |
|
19 |
return errors.New("no PDF file name") |
|
20 |
} |
|
21 |
||
22 |
size := takuzu.Size |
|
23 |
||
24 |
pdf := gofpdf.New("P", "mm", "A4", "") |
|
25 |
pdf.SetFont("Arial", "", 14) |
|
26 |
||
27 |
basicTable := func() { |
|
28 |
||
29 |
for ln, l := range takuzu.Board { |
|
30 |
for cn, cell := range l { |
|
31 |
border := "" // empty, "1", "L", "T", "R" and "B" |
|
32 |
if ln == 0 { |
|
33 |
border += "T" |
|
34 |
} |
|
35 |
if cn == 0 { |
|
36 |
border += "L" |
|
37 |
} |
|
38 |
if ln+1 == size { |
|
39 |
border += "B" |
|
40 |
} |
|
41 |
if cn+1 == size { |
|
42 |
border += "R" |
|
43 |
} |
|
44 |
align := "CM" // horiz=Center vert=Middle |
|
45 |
if cell.Defined { |
|
46 |
pdf.CellFormat(8, 8, fmt.Sprint(cell.Value), border, 0, align, false, 0, "") |
|
47 |
} else { |
|
48 |
pdf.CellFormat(8, 8, ".", border, 0, align, false, 0, "") |
|
49 |
} |
|
50 |
} |
|
51 |
pdf.Ln(-1) |
|
52 |
} |
|
53 |
} |
|
54 |
||
55 |
pdf.AddPage() |
|
56 |
basicTable() |
|
57 |
if err := pdf.OutputFileAndClose(pdfFileName); err != nil { |
|
58 |
return err |
|
59 |
} |
|
60 |
||
61 |
return nil |
|
62 |
} |