package main import ( "flag" "fmt" "github.com/gin-gonic/gin" "github.com/jung-kurt/gofpdf" "insure/global" "insure/initialize" "insure/router" "strconv" ) func main() { initial() //testVerify() //runServer() gen1() //runServerInWindows() } func initial() { var configFilePath string flag.StringVar(&configFilePath, "config", "./conf/config.yaml", "配置文件") flag.Parse() global.Config = initialize.InitConfig(configFilePath) global.DB = initialize.InitDB(global.Config) global.Redis = initialize.InitRedis(global.Config) } /*func runServer() { r := gin.Default() s := &http.Server{ Addr: ":8080", Handler: r, ReadTimeout: 10 * time.Second, WriteTimeout: 10 * time.Second, MaxHeaderBytes: 1 << 20, } router.Initial(r) err := endless.ListenAndServe(":"+global.Config.Server.Port, s.Handler) if err != nil { panic(err) } }*/ func runServerInWindows() { r := gin.Default() router.Initial(r) r.Run(":" + global.Config.Server.Port) } func gen() { pdf := gofpdf.New("P", "mm", "A4", "") // 210mm x 297mm pdf.AddPage() for fontSize := 4; fontSize < 40; fontSize += 10 { pdf.SetFont("Arial", "S", float64(fontSize)) pdf.SetXY(0, float64(fontSize)) pdf.Cell(40, 10, "Hello World") } err := pdf.OutputFileAndClose("./test.pdf") if err != nil { fmt.Println(err) } } func strDelimit(str string, sepstr string, sepcount int) string { pos := len(str) - sepcount for pos > 0 { str = str[:pos] + sepstr + str[pos:] pos = pos - sepcount } return str } func gen1() { pdf := gofpdf.New("P", "mm", "A4", "") type countryType struct { nameStr, capitalStr, areaStr, popStr string } countryList := make([]countryType, 0, 8) header := []string{"Country", "Capital", "Area (sq km)", "Pop. (thousands)"} for i := 0; i < 8; i++ { countryList = append(countryList, countryType{ nameStr: "name" + strconv.Itoa(i), capitalStr: "capital" + strconv.Itoa(i), areaStr: "area" + strconv.Itoa(i), popStr: "pop" + strconv.Itoa(i), }) } // Simple table basicTable := func() { left := (210.0 - 4*40) / 2 pdf.SetX(left) for _, str := range header { pdf.CellFormat(40, 7, str, "1", 0, "", false, 0, "") } pdf.Ln(-1) for _, c := range countryList { pdf.SetX(left) pdf.CellFormat(40, 6, c.nameStr, "1", 0, "", false, 0, "") pdf.CellFormat(40, 6, c.capitalStr, "1", 0, "", false, 0, "") pdf.CellFormat(40, 6, c.areaStr, "1", 0, "", false, 0, "") pdf.CellFormat(40, 6, c.popStr, "1", 0, "", false, 0, "") pdf.Ln(-1) } } // Better table improvedTable := func() { // Column widths w := []float64{40.0, 35.0, 40.0, 45.0} wSum := 0.0 for _, v := range w { wSum += v } left := (210 - wSum) / 2 // Header pdf.SetX(left) for j, str := range header { pdf.CellFormat(w[j], 7, str, "1", 0, "C", false, 0, "") } pdf.Ln(-1) // Data for _, c := range countryList { pdf.SetX(left) pdf.CellFormat(w[0], 6, c.nameStr, "LR", 0, "", false, 0, "") pdf.CellFormat(w[1], 6, c.capitalStr, "LR", 0, "", false, 0, "") pdf.CellFormat(w[2], 6, strDelimit(c.areaStr, ",", 3), "LR", 0, "R", false, 0, "") pdf.CellFormat(w[3], 6, strDelimit(c.popStr, ",", 3), "LR", 0, "R", false, 0, "") pdf.Ln(-1) } pdf.SetX(left) pdf.CellFormat(wSum, 0, "", "T", 0, "", false, 0, "") } // Colored table fancyTable := func() { // Colors, line width and bold font pdf.SetFillColor(255, 0, 0) pdf.SetTextColor(255, 255, 255) pdf.SetDrawColor(128, 0, 0) pdf.SetLineWidth(.3) pdf.SetFont("", "B", 0) // Header w := []float64{40, 35, 40, 45} wSum := 0.0 for _, v := range w { wSum += v } left := (210 - wSum) / 2 pdf.SetX(left) for j, str := range header { pdf.CellFormat(w[j], 7, str, "1", 0, "C", true, 0, "") } pdf.Ln(-1) // Color and font restoration pdf.SetFillColor(224, 235, 255) pdf.SetTextColor(0, 0, 0) pdf.SetFont("", "", 0) // Data fill := false for _, c := range countryList { pdf.SetX(left) pdf.CellFormat(w[0], 6, c.nameStr, "LR", 0, "", fill, 0, "") pdf.CellFormat(w[1], 6, c.capitalStr, "LR", 0, "", fill, 0, "") pdf.CellFormat(w[2], 6, strDelimit(c.areaStr, ",", 3), "LR", 0, "R", fill, 0, "") pdf.CellFormat(w[3], 6, strDelimit(c.popStr, ",", 3), "LR", 0, "R", fill, 0, "") pdf.Ln(-1) fill = !fill } pdf.SetX(left) pdf.CellFormat(wSum, 0, "", "T", 0, "", false, 0, "") } pdf.AddPage() pdf.SetFont("宋体", "", float64(40)) pdf.SetXY(0, float64(40)) pdf.Cell(40, 10, "注意:请认准阅读所附条款,/n尤其是黑体部分内容") pdf.SetFont("Arial", "", 14) basicTable() pdf.AddPage() improvedTable() pdf.AddPage() fancyTable() err := pdf.OutputFileAndClose("./test2.pdf") if err != nil { fmt.Println(err) } }