mirror of
https://github.com/siyuan-note/siyuan.git
synced 2025-12-16 22:50:13 +01:00
✨ Support adding the watermark on export PDF https://github.com/siyuan-note/siyuan/issues/9961
This commit is contained in:
parent
efac191a82
commit
2ff2f1972e
3 changed files with 46 additions and 31 deletions
|
|
@ -528,8 +528,8 @@ func processPDF(c *gin.Context) {
|
|||
merge = arg["merge"].(bool)
|
||||
}
|
||||
removeAssets := arg["removeAssets"].(bool)
|
||||
//watermark := arg["watermark"].(bool)
|
||||
err := model.ProcessPDF(id, path, merge, removeAssets, true)
|
||||
watermark := arg["watermark"].(bool)
|
||||
err := model.ProcessPDF(id, path, merge, removeAssets, watermark)
|
||||
if nil != err {
|
||||
ret.Code = -1
|
||||
ret.Msg = err.Error()
|
||||
|
|
|
|||
|
|
@ -852,35 +852,6 @@ func processPDFWatermark(pdfCtx *pdfcpu.Context, watermark bool) {
|
|||
return
|
||||
}
|
||||
|
||||
desc := Conf.Export.PDFWatermarkDesc
|
||||
descParts := strings.Split(desc, ",")
|
||||
m := map[string]string{}
|
||||
for _, descPart := range descParts {
|
||||
kv := strings.Split(descPart, ":")
|
||||
if 2 != len(kv) {
|
||||
continue
|
||||
}
|
||||
m[kv[0]] = kv[1]
|
||||
}
|
||||
if "" == m["fontname"] {
|
||||
m["fontname"] = "LXGWWenKaiLite-Regular"
|
||||
}
|
||||
descBuilder := bytes.Buffer{}
|
||||
for k, v := range m {
|
||||
descBuilder.WriteString(k)
|
||||
descBuilder.WriteString(":")
|
||||
descBuilder.WriteString(v)
|
||||
descBuilder.WriteString(",")
|
||||
}
|
||||
desc = descBuilder.String()
|
||||
desc = desc[:len(desc)-1]
|
||||
|
||||
fontPath := filepath.Join(util.AppearancePath, "fonts", "LxgwWenKai-Lite-1.311", "LXGWWenKaiLite-Regular.ttf")
|
||||
err := api.InstallFonts([]string{fontPath})
|
||||
if nil != err {
|
||||
logging.LogErrorf("install font [%s] failed: %s", fontPath, err)
|
||||
}
|
||||
|
||||
mode := "text"
|
||||
if gulu.File.IsExist(str) {
|
||||
if ".pdf" == strings.ToLower(filepath.Ext(str)) {
|
||||
|
|
@ -890,9 +861,40 @@ func processPDFWatermark(pdfCtx *pdfcpu.Context, watermark bool) {
|
|||
}
|
||||
}
|
||||
|
||||
desc := Conf.Export.PDFWatermarkDesc
|
||||
if "text" == mode && util.ContainsCJK(str) {
|
||||
// 中日韩文本水印需要安装字体文件
|
||||
descParts := strings.Split(desc, ",")
|
||||
m := map[string]string{}
|
||||
for _, descPart := range descParts {
|
||||
kv := strings.Split(descPart, ":")
|
||||
if 2 != len(kv) {
|
||||
continue
|
||||
}
|
||||
m[kv[0]] = kv[1]
|
||||
}
|
||||
m["fontname"] = "LXGWWenKaiLite-Regular"
|
||||
descBuilder := bytes.Buffer{}
|
||||
for k, v := range m {
|
||||
descBuilder.WriteString(k)
|
||||
descBuilder.WriteString(":")
|
||||
descBuilder.WriteString(v)
|
||||
descBuilder.WriteString(",")
|
||||
}
|
||||
desc = descBuilder.String()
|
||||
desc = desc[:len(desc)-1]
|
||||
|
||||
fontPath := filepath.Join(util.AppearancePath, "fonts", "LxgwWenKai-Lite-1.311", "LXGWWenKaiLite-Regular.ttf")
|
||||
err := api.InstallFonts([]string{fontPath})
|
||||
if nil != err {
|
||||
logging.LogErrorf("install font [%s] failed: %s", fontPath, err)
|
||||
}
|
||||
}
|
||||
|
||||
logging.LogInfof("add PDF watermark [mode=%s, str=%s, desc=%s]", mode, str, desc)
|
||||
|
||||
var wm *pdfcpu.Watermark
|
||||
var err error
|
||||
switch mode {
|
||||
case "text":
|
||||
wm, err = pdfcpu.ParseTextWatermarkDetails(str, desc, false, pdfcpu.POINTS)
|
||||
|
|
|
|||
|
|
@ -18,10 +18,23 @@ package util
|
|||
|
||||
import (
|
||||
"regexp"
|
||||
"unicode"
|
||||
|
||||
"github.com/88250/gulu"
|
||||
)
|
||||
|
||||
func ContainsCJK(text string) bool {
|
||||
for _, r := range text {
|
||||
ret := unicode.Is(unicode.Han, r) || unicode.Is(unicode.Lm, r) ||
|
||||
unicode.Is(unicode.Hiragana, r) || unicode.Is(unicode.Katakana, r) ||
|
||||
unicode.Is(unicode.Hangul, r)
|
||||
if ret {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
var emojiRegex = regexp.MustCompile(`/([0-9#][\x{20E3}])|` +
|
||||
`[\x{00ae}\x{00a9}\x{203C}\x{2047}\x{2048}\x{2049}\x{3030}\x{303D}\x{2139}\x{2122}\x{3297}\x{3299}]|` +
|
||||
`[\x{2190}-\x{21FF}]|[\x{FE00}-\x{FEFF}]|` +
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue