go 使用gofpdf生成多个pdf文件,进行网络请求返回给前端

package main
import (
	"fmt"
	"github.com/boombuler/barcode"
	"github.com/boombuler/barcode/code128"
	"github.com/jung-kurt/gofpdf"
	"image/jpeg"
	"net/http"
	"os"
	"strconv"
)

func main() {
	http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
		code := []string{"PTR10071", "PTR10072", "PTR10074"}
		Wd, Ht := 21.6, 41.6
		init := &gofpdf.InitType{
			OrientationStr: "L",
			UnitStr:        "",
			SizeStr:        "A6",
			Size: gofpdf.SizeType{
				Wd, Ht,
			},
			FontDirStr: "",
		}

		pdf := gofpdf.NewCustom(init)
		for i, s := range code {
			cs, _ := code128.Encode(s)
			filename := strconv.Itoa(i) + ".jpg"
			file, _ := os.Create(filename)
			defer file.Close()
			qrCode, _ := barcode.Scale(cs, 250, 70)
			jpeg.Encode(file, qrCode, &jpeg.Options{100})

			//添加一页
			pdf.SetHeaderFuncMode(func() {
				pdf.Image("./"+filename, 5, 6, 30, 0, false, "", 0, "")
				pdf.SetXY(0, 5)
				pdf.Ln(13)
				pdf.SetFont("Arial", "B", 10)
				pdf.Cell(0, 0, s)
			}, true)
			pdf.AddPage()
		}

		err := pdf.Output(w)
		if err != nil {
			fmt.Println(err)
		}
	})
	if err := http.ListenAndServe(":8000", nil); err != nil {
		fmt.Println(err)
	}
}

使用[]string进行循环,图片生成的时候不能在外面定义,如果在外部定义会重合掉,

gofpdf.InitType设置pdf的大小

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值