package hdl import ( "fmt" "github.com/boombuler/barcode" "github.com/boombuler/barcode/code128" "github.com/gin-gonic/gin" "github.com/jung-kurt/gofpdf" "image/jpeg" "net/url" "os" ) func Demo1(c *gin.Context) { // 创建一个新的PDF文件 pdf := gofpdf.New("P", "mm", "A4", "") // 添加一页 pdf.AddPage() // 设置文本颜色(参数为RGB值) pdf.SetTextColor(0, 0, 0) // 换行 pdf.Ln(-1) // 引入中文字体,需要相应的字体文件 pdf.AddUTF8Font("SourceHanSansCN-Light", "", "./static/SourceHanSansCN-Light.ttf") // 引入中文字体后设置中文字体和字号 left := 15.0 pdf.Image("./static/图片1.png", left, 25, 50, 15, false, "PNG", 0, "") pdf.SetFont("SourceHanSansCN-Light", "", 10) pdf.Text(130, 40, "杭州激活鸟网络科技有限公司") //// 生成EAN-13条形码 cs, _ := code128.Encode("jihuoniao-Ads-20240913-7653481486") // 创建一个要输出数据的文件 file, _ := os.Create("./static/1.jpg") defer file.Close() // 设置图片像素大小 qrCode, _ := barcode.Scale(cs, 350, 100) // 将code128的条形码编码为png图片 jpeg.Encode(file, qrCode, nil) pdf.Image("./static/1.jpg", left, 50, 170, 30, false, "JPEG", 0, "") pdf.SetFont("SourceHanSansCN-Light", "", 28) pdf.Text(left, 95, "激活鸟 · 变现中心结算对账单") pdf.SetFont("SourceHanSansCN-Light", "", 12) pdf.Text(left, 105, "结 算 单 号 : jihuoniao-Ads-20240913-7653481486") pdf.Text(left, 115, "制 表 日 期 : 2024/10/29") pdf.Text(left, 125, "结 算 日 期 : 2024.08.01 - 2024.08.31") pdf.Text(left, 135, "客 户 名 称 : 天津公交易通科技有限公司") // 定义表格内容 pdf.SetFont("SourceHanSansCN-Light", "", 12) table := []string{ "业务类型", "基础收益(元)", "其他调整(元)", "实际结算总计(元)", "广告合作", "1", "2", "3", } // 定义表格列数 col := 4 // 定义单元格位置 cellWidth := 10.0 * 4 cellHeight := 8.0 x := left y := 140.0 for i := 0; i < len(table); { pdf.SetXY(x, y) if i == col { cellHeight = 13 } for j := 0; j < col; j++ { if i < len(table) { // 循环绘制单元格并输入内容 pdf.CellFormat(cellWidth, cellHeight, table[i], "1", 0, "C", false, 0, "") } i++ } y = y + cellHeight } pdf.SetFont("SourceHanSansCN-Light", "", 12) pdf.Text(100, 170, "实际结算总计(元):") pdf.Text(160, 170, "63531.08") pdf.Text(210/2-20, 190, "数据确认回执栏") pdf.Line(left, 193, 180, 194) pdf.Text(left, 200, "数据确认") pdf.Text(left, 210, "公司(盖章或手印):") pdf.Text(left, 220, "授权人代表签字:") pdf.Text(left, 230, "日期:") // 保存PDF文件 pdfName := "hello.pdf" err := pdf.OutputFileAndClose("./static/" + pdfName) if err != nil { fmt.Println(err) return } c.Header("Content-Type", "application/octet-stream") c.Header("Content-Disposition", "attachment; filename="+url.QueryEscape(pdfName)) c.Header("Content-Transfer-Encoding", "binary") c.File("./static/" + pdfName) return }