Support adding the watermark on export PDF https://github.com/siyuan-note/siyuan/issues/9961

This commit is contained in:
Daniel 2023-12-24 12:16:27 +08:00
parent 4adff64ddc
commit 59b4872cff
No known key found for this signature in database
GPG key ID: 86211BA83DF03017

View file

@ -818,6 +818,7 @@ func ProcessPDF(id, p string, merge, removeAssets bool) (err error) {
processPDFBookmarks(pdfCtx, headings)
processPDFLinkEmbedAssets(pdfCtx, assetDests, removeAssets)
// processPDFWatermark(pdfCtx, "text", "Test", "")
pdfcpu.VersionStr = "SiYuan v" + util.Ver
if writeErr := api.WriteContextFile(pdfCtx, p); nil != writeErr {
@ -827,6 +828,46 @@ func ProcessPDF(id, p string, merge, removeAssets bool) (err error) {
return
}
func processPDFWatermark(pdfCtx *pdfcpu.Context, mode, watermark, desc string) {
// Support adding the watermark on export PDF https://github.com/siyuan-note/siyuan/issues/9961
// https://pdfcpu.io/core/watermark
if !IsPaidUser() {
return
}
if "" == watermark {
return
}
if "text" != mode && "image" != mode && "pdf" != mode {
logging.LogErrorf("invalid watermark type: %s", mode)
return
}
var wm *pdfcpu.Watermark
var err error
switch mode {
case "text":
wm, err = pdfcpu.ParseTextWatermarkDetails(watermark, desc, false, pdfcpu.POINTS)
case "image":
wm, err = pdfcpu.ParseImageWatermarkDetails(watermark, desc, false, pdfcpu.POINTS)
case "pdf":
wm, err = pdfcpu.ParsePDFWatermarkDetails(watermark, desc, false, pdfcpu.POINTS)
}
if nil != err {
logging.LogErrorf("parse watermark failed: %s", err)
return
}
err = pdfCtx.AddWatermarks(nil, wm)
if nil != err {
logging.LogErrorf("add watermark failed: %s", err)
return
}
}
func processPDFBookmarks(pdfCtx *pdfcpu.Context, headings []*ast.Node) {
links, err := api.ListToCLinks(pdfCtx)
if nil != err {