This commit is contained in:
Daniel 2025-04-24 20:48:16 +08:00
parent 89d9d16a06
commit 99d4ad4bd4
No known key found for this signature in database
GPG key ID: 86211BA83DF03017
3 changed files with 44 additions and 10 deletions

View file

@ -1041,6 +1041,10 @@ func ProcessPDF(id, p string, merge, removeAssets, watermark bool) (err error) {
logging.LogErrorf("mkdir [%s] failed: %s", font.UserFontDir, mkdirErr)
return
}
if loadErr := api.LoadUserFonts(); nil != loadErr {
logging.LogErrorf("load user fonts failed: %s", loadErr)
}
pdfCtx, ctxErr := api.ReadContextFile(p)
if nil != ctxErr {
logging.LogErrorf("read pdf context failed: %s", ctxErr)
@ -1098,7 +1102,43 @@ func processPDFWatermark(pdfCtx *model.Context, watermark bool) {
}
m[kv[0]] = kv[1]
}
m["fontname"] = "LXGWWenKaiLite-Regular"
useDefaultFont := true
if "" != m["fontname"] {
listFonts, e := api.ListFonts()
var builtInFontNames []string
if nil != e {
logging.LogInfof("listFont failed: %s", e)
} else {
for _, f := range listFonts {
if strings.Contains(f, "(") {
f = f[:strings.Index(f, "(")]
}
f = strings.TrimSpace(f)
if strings.Contains(f, ":") || "" == f || strings.Contains(f, "Corefonts") || strings.Contains(f, "Userfonts") {
continue
}
builtInFontNames = append(builtInFontNames, f)
}
for _, font := range builtInFontNames {
if font == m["fontname"] {
useDefaultFont = false
break
}
}
}
}
if useDefaultFont {
m["fontname"] = "LXGWWenKaiLite-Regular"
fontPath := filepath.Join(util.AppearancePath, "fonts", "LxgwWenKai-Lite-1.501", "LXGWWenKaiLite-Regular.ttf")
err := api.InstallFonts([]string{fontPath})
if err != nil {
logging.LogErrorf("install font [%s] failed: %s", fontPath, err)
}
}
descBuilder := bytes.Buffer{}
for k, v := range m {
descBuilder.WriteString(k)
@ -1108,12 +1148,6 @@ func processPDFWatermark(pdfCtx *model.Context, watermark bool) {
}
desc = descBuilder.String()
desc = desc[:len(desc)-1]
fontPath := filepath.Join(util.AppearancePath, "fonts", "LxgwWenKai-Lite-1.501", "LXGWWenKaiLite-Regular.ttf")
err := api.InstallFonts([]string{fontPath})
if err != nil {
logging.LogErrorf("install font [%s] failed: %s", fontPath, err)
}
}
logging.LogInfof("add PDF watermark [mode=%s, str=%s, desc=%s]", mode, str, desc)