|
@@ -12,6 +12,7 @@ import (
|
|
|
"github.com/pdfcpu/pdfcpu/pkg/pdfcpu/model"
|
|
|
"github.com/pdfcpu/pdfcpu/pkg/pdfcpu/types"
|
|
|
"io"
|
|
|
+ "math"
|
|
|
"mime/multipart"
|
|
|
"os"
|
|
|
"os/exec"
|
|
@@ -212,22 +213,47 @@ func GeneralWaterMarkPdf(pdfPath, waterMarkStr string) (f2 *bytes.Buffer, err er
|
|
|
}()
|
|
|
|
|
|
f2 = &bytes.Buffer{}
|
|
|
+ points := "24" //字号大小
|
|
|
+ rows := 6 //行数
|
|
|
+ // 处理文字
|
|
|
+ textLen := len(waterMarkStr)
|
|
|
+ count := int(math.Round(250.0 / (float64(textLen) + 18)))
|
|
|
+ if textLen > 102 {
|
|
|
+ count = 1
|
|
|
+ }
|
|
|
+ if textLen > 210 {
|
|
|
+ points = "20"
|
|
|
+ rows = 7
|
|
|
+ }
|
|
|
+ var sb1 strings.Builder
|
|
|
+ for i := 0; i < count; i++ {
|
|
|
+ sb1.WriteString(waterMarkStr)
|
|
|
+ }
|
|
|
|
|
|
- //strList := []string{waterMarkStr, waterMarkStr, waterMarkStr, waterMarkStr, waterMarkStr, waterMarkStr}
|
|
|
- strList := []string{waterMarkStr, waterMarkStr, waterMarkStr, waterMarkStr}
|
|
|
- //strList := []string{waterMarkStr}
|
|
|
- newWaterMarkStr := strings.Join(strList, " ")
|
|
|
- wmList := make([]*model.Watermark, 0)
|
|
|
- for i := types.TopLeft; i <= 9; i++ {
|
|
|
- wm, tmpErr := api.TextWatermark(newWaterMarkStr, "fo:SimHei, points:48, col: 0.75 0.75 0.75, rot:45, scale:1 abs, opacity:0.3", onTop, update, types.POINTS)
|
|
|
- if tmpErr != nil {
|
|
|
- fmt.Println("TextWatermark err:", tmpErr)
|
|
|
- return
|
|
|
+ //单行文字制作完成
|
|
|
+ sb1Str := sb1.String()
|
|
|
+ //拼接成多行文字
|
|
|
+ var sb2 strings.Builder
|
|
|
+ lineSpace := "\n \n \n \n \n \n"
|
|
|
+
|
|
|
+ for i := 0; i < rows; i++ {
|
|
|
+ sb2.WriteString(sb1Str)
|
|
|
+ if i < rows-1 {
|
|
|
+ sb2.WriteString(lineSpace)
|
|
|
}
|
|
|
- //wm.Pos = types.Center
|
|
|
- wm.Pos = i
|
|
|
- wmList = append(wmList, wm)
|
|
|
+
|
|
|
}
|
|
|
+ wmList := make([]*model.Watermark, 0)
|
|
|
+ //for i := types.TopLeft; i <= 9; i++ {
|
|
|
+ wm, tmpErr := api.TextWatermark(sb2.String(), "fo:SimHei, points:"+points+", col: 0.75 0.75 0.75, scale:1 abs, opacity:0.3", onTop, update, types.POINTS)
|
|
|
+ if tmpErr != nil {
|
|
|
+ fmt.Println("TextWatermark err:", tmpErr)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ //wm.Pos = types.Center
|
|
|
+ wm.Pos = types.TopCenter
|
|
|
+ wmList = append(wmList, wm)
|
|
|
+ //}
|
|
|
|
|
|
err = AddWatermarks(f1, f2, nil, wmList, nil)
|
|
|
|