I'm using the go https://github.com/jung-kurt/gofpdf library to generate a pdf with a table which contains large number of rows . But when it exceeds one page,the page header will not be added to the remaining pages. Is there anyway where I can add the table header in the each page.(Not using page header option) . Here I have added a sample code I used
package main
import (
"github.com/jung-kurt/gofpdf"
"log"
)
func main() {
generatePDF()
}
func generatePDF() error {
//creating new report PDF
pdf := newReport()
//pdf table header
pdf = header(pdf, []string{"col1", "col2", "col3", "col4", "col5"})
//pdf table content
data := [][]string{
{"test", "1 2", "d1", "1 4", "15"},
{"2 1", "2 2", "2 3", "", "2 "},
{"test", "1 2", "d1", "1 4", "15"},
{"2 1", "2 2", "2 3", "d1", "2 "},
{"test", "1 2", "d1", "1 4", "15"},
{"2 1", "2 2", "2 3", "", "2 "},
{"test", "1 2", "d1", "1 4", "15"},
{"2 1", "2 2", "2 3", "d1", "2 "},
{"test", "1 2", "d1", "1 4", "15"},
{"2 1", "2 2", "2 3", "", "2 "},
{"test", "1 2", "d1", "1 4", "15"},
{"2 1", "2 2", "2 3", "d1", "2 "},
{"test", "1 2", "d1", "1 4", "15"},
{"2 1", "2 2", "2 3", "", "2 "},
{"test", "1 2", "d1", "1 4", "15"},
{"2 1", "2 2", "2 3", "d1", "2 "},
{"test", "1 2", "d1", "1 4", "15"},
{"2 1", "2 2", "2 3", "", "2 "},
{"test", "1 2", "d1", "1 4", "15"},
{"2 1", "2 2", "2 3", "d1", "2 "},
{"test", "1 2", "d1", "1 4", "15"},
{"2 1", "2 2", "2 3", "", "2 "},
{"test", "1 2", "d1", "1 4", "15"},
{"2 1", "2 2", "2 3", "d1", "2 "},
{"test", "1 2", "d1", "1 4", "15"},
{"2 1", "2 2", "2 3", "", "2 "},
{"test", "1 2", "d1", "1 4", "15"},
{"2 1", "2 2", "2 3", "d1", "2 "},
{"test", "1 2", "d1", "1 4", "15"},
{"2 1", "2 2", "2 3", "", "2 "},
{"test", "1 2", "d1", "1 4", "15"},
{"2 1", "2 2", "2 3", "d1", "2 "},
{"test", "1 2", "d1", "1 4", "15"},
{"2 1", "2 2", "2 3", "", "2 "},
{"test", "1 2", "d1", "1 4", "15"},
{"2 1", "2 2", "2 3", "d1", "2 "},
{"test", "1 2", "d1", "1 4", "15"},
{"2 1", "2 2", "2 3", "", "2 "},
{"test", "1 2", "d1", "1 4", "15"},
{"2 1", "2 2", "2 3", "d1", "2 "},
{"test", "1 2", "d1", "1 4", "15"},
{"2 1", "2 2", "2 3", "", "2 "},
{"test", "1 2", "d1", "1 4", "15"},
{"2 1", "2 2", "2 3", "d1", "2 "},
{"test", "1 2", "d1", "1 4", "15"},
{"2 1", "2 2", "2 3", "", "2 "},
{"test", "1 2", "d1", "1 4", "15"},
{"2 1", "2 2", "2 3", "d1", "2 "},
{"test", "1 2", "d1", "1 4", "15"},
{"2 1", "2 2", "2 3", "", "2 "},
{"test", "1 2", "d1", "1 4", "15"},
{"2 1", "2 2", "2 3", "d1", "2 "},
{"test", "1 2", "d1", "1 4", "15"},
{"2 1", "2 2", "2 3", "", "2 "},
{"test", "1 2", "d1", "1 4", "15"},
{"2 1", "2 2", "2 3", "d1", "2 "},
}
//b := [][]string{}
pdf = table(pdf, data)
if pdf.Err() {
log.Fatalf("failed ! %s", pdf.Error())
}
err := pdf.OutputFileAndClose("table.pdf")
if err != nil {
return err
}
return nil
}
func newReport() *gofpdf.Fpdf {
pdf := gofpdf.New("P", "mm", "A4", "")
pdf.AddPage()
pdf.Ln(20)
pdf.SetFont("Times", "B", 14)
pdf.Cell(20, 10, "tables")
pdf.Ln(20)
return pdf
}
func header(pdf *gofpdf.Fpdf, headerText []string) *gofpdf.Fpdf {
pdf.SetFont("Times", "B", 16)
pdf.SetFillColor(240, 240, 240)
for _, str := range headerText {
pdf.CellFormat(35, 10, str, "1", 0, "C", true, 0, "")
}
pdf.Ln(-1) //newline height equals the last line height
return pdf
}
func table(pdf *gofpdf.Fpdf, tbl [][]string) *gofpdf.Fpdf {
pdf.SetFont("Times", "", 16)
pdf.SetFillColor(255, 255, 255) //white color
align := []string{"C", "C", "C", "C", "C"}
for _, line := range tbl {
for i, str := range line {
pdf.CellFormat(35, 10, str, "1", 0, align[i], false, 0, "")
}
pdf.Ln(-1)
}
pdf.Ln(-1)
return pdf
}