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的大小