diff --git a/main.go b/main.go index 91352bf..0bfb8b6 100644 --- a/main.go +++ b/main.go @@ -1,14 +1,17 @@ package main import ( - "github.com/signintech/gopdf" "encoding/csv" - "os" - "log" "fmt" + "log" "math" + "os" + + "github.com/signintech/gopdf" ) +const title string = "Teilnahmeliste der StugA Lehramt GO-Vollversammlung 07.04.2026" + func main() { // Prepare data file, err := os.Open("list.csv") @@ -35,24 +38,23 @@ func main() { }) pdf.AddTTFFont("inter", "./inter.ttf") - pdf.SetFont("inter", "", 10) - - + pdf.SetMargins(20, 20, 20, 20) var tableEntries [][]string var tablePageIndex = 0 - var tablePageLength = 31 + var tablePageLength = 36 + var isFirst bool = true // Write data to document - for index, record := range records { + for index, record := range records[1:] { tableEntries = append(tableEntries, []string{ - fmt.Sprintf("%d", index), + fmt.Sprintf("%d", index+1), record[3], record[5], }) - if index % 31 == 0 { - pdf.AddPage() - } + // if index%31 == 0 { + // pdf.AddPage() + // } } iterations := math.Ceil(float64(len(tableEntries)) / 31.0) @@ -60,16 +62,37 @@ func main() { for i := 0; i < int(iterations); i += 1 { // create each page here - table := pdf.NewTableLayout(24, 24, 24, 24) - table.AddColumn("#", 20, "left") - table.AddColumn("Name", 160, "left") - table.AddColumn("Fächer", 360, "left") + pdf.AddPage() + var table gopdf.TableLayout - for i := tablePageIndex; i < tablePageIndex + tablePageLength; i += 1 { - table.AddRow() + if isFirst { + pdf.SetFont("inter", "", 12) + pdf.Cell(nil, title) + + pdf.SetFont("inter", "", 10) + isFirst = false + + table = pdf.NewTableLayout(20, 40, 21, 1) + } else { + table = pdf.NewTableLayout(20, 20, 21, 1) + } + table.AddColumn("#", 30, "left") + table.AddColumn("Name", 170, "left") + table.AddColumn("Fächer", 340, "left") + + for i := tablePageIndex; i < tablePageIndex+tablePageLength; i += 1 { + if i >= len(tableEntries) { + break + } + table.AddRow(tableEntries[i]) } + table.DrawTable() + tablePageIndex += tablePageLength + + pdf.SetXY(573, 815) + pdf.Cell(nil, fmt.Sprintf("%d", int(i+1))) } // table.SetTableStyle(gopdf.CellStyle{ @@ -114,8 +137,6 @@ func main() { // FontSize: 10, // }) - table.DrawTable() - // Finish document pdf.WritePdf("vvliste.pdf") -} \ No newline at end of file +}