|
- 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
- }
|