github.com/gen2brain/go-fitz 强大的读取pdf内容的工具包
github.com/pdfcpu/pdfcpu 给pdf添加水印
file, err := fitz.New("out.pdf")
if err != nil {
panic(err)
}
totalNum := file.NumPage()
text, _ := file.Text(totalNum - 1)//读取最后一页的内容
file.Close()
s := strings.Split(text, "批次")
x_cnt := len(s) - 1 //最后一页框体数量
// fmt.Println(text, file.NumPage(), len(s)-1)
// return
c1 := "points:10,rot:0,scale:1 abs,offset:-46 180,fillc: #000000"
c2 := "points:10,rot:0,scale:1 abs,offset:-46 -96.5,fillc: #000000"
c3 := "points:10,rot:0,scale:1 abs,offset:365 180,fillc: #000000"
c4 := "points:10,rot:0,scale:1 abs,offset:365 -96.5,fillc: #000000"
pages := []string{}
for i := 1; i <= totalNum; i++ {
pages = append(pages, strconv.Itoa(i))
}
pages_4_cnt := pages[0 : len(pages)-1]
batchNo := "BT20240301001"
if len(pages_4_cnt) > 0 {
api.AddTextWatermarksFile("out.pdf", "out.pdf", pages_4_cnt, true, batchNo, c1, nil)
api.AddTextWatermarksFile("out.pdf", "out.pdf", pages_4_cnt, true, batchNo, c2, nil)
api.AddTextWatermarksFile("out.pdf", "out.pdf", pages_4_cnt, true, batchNo, c3, nil)
api.AddTextWatermarksFile("out.pdf", "out.pdf", pages_4_cnt, true, batchNo, c4, nil)
}
pages_last := pages[len(pages)-1:]
switch x_cnt {
case 1:
api.AddTextWatermarksFile("out.pdf", "out.pdf", pages_last, true, batchNo, c1, nil)
case 2:
api.AddTextWatermarksFile("out.pdf", "out.pdf", pages_last, true, batchNo, c1, nil)
api.AddTextWatermarksFile("out.pdf", "out.pdf", pages_last, true, batchNo, c2, nil)
case 3:
api.AddTextWatermarksFile("out.pdf", "out.pdf", pages_last, true, batchNo, c1, nil)
api.AddTextWatermarksFile("out.pdf", "out.pdf", pages_last, true, batchNo, c2, nil)
api.AddTextWatermarksFile("out.pdf", "out.pdf", pages_last, true, batchNo, c3, nil)
case 4:
api.AddTextWatermarksFile("out.pdf", "out.pdf", pages_last, true, batchNo, c1, nil)
api.AddTextWatermarksFile("out.pdf", "out.pdf", pages_last, true, batchNo, c2, nil)
api.AddTextWatermarksFile("out.pdf", "out.pdf", pages_last, true, batchNo, c3, nil)
api.AddTextWatermarksFile("out.pdf", "out.pdf", pages_last, true, batchNo, c4, nil)
}