🎨 Add data-doc-type and attribute when exporting image and PDF https://github.com/siyuan-note/siyuan/issues/9497

This commit is contained in:
Daniel 2023-10-25 09:30:03 +08:00
parent 281e0ba091
commit dbd829a4a0
No known key found for this signature in database
GPG key ID: 86211BA83DF03017
2 changed files with 14 additions and 3 deletions

View file

@ -26,6 +26,7 @@ import (
"time"
"github.com/88250/gulu"
"github.com/88250/lute/parse"
"github.com/gin-gonic/gin"
"github.com/siyuan-note/logging"
"github.com/siyuan-note/siyuan/kernel/model"
@ -462,14 +463,23 @@ func exportPreviewHTML(c *gin.Context) {
if nil != arg["image"] {
image = arg["image"].(bool)
}
name, content := model.ExportHTML(id, "", true, image, keepFold, merge)
name, content, node := model.ExportHTML(id, "", true, image, keepFold, merge)
// 导出 PDF 预览时点击块引转换后的脚注跳转不正确 https://github.com/siyuan-note/siyuan/issues/5894
content = strings.ReplaceAll(content, "http://"+util.LocalHost+":"+util.ServerPort+"/#", "#")
attrs := map[string]string{}
var typ string
if nil != node {
attrs = parse.IAL2Map(node.KramdownIAL)
typ = node.Type.String()
}
ret.Data = map[string]interface{}{
"id": id,
"name": name,
"content": content,
"attrs": attrs,
"type": typ,
}
}
@ -493,7 +503,7 @@ func exportHTML(c *gin.Context) {
if nil != arg["merge"] {
merge = arg["merge"].(bool)
}
name, content := model.ExportHTML(id, savePath, pdf, false, keepFold, merge)
name, content, _ := model.ExportHTML(id, savePath, pdf, false, keepFold, merge)
ret.Data = map[string]interface{}{
"id": id,
"name": name,

View file

@ -585,7 +585,7 @@ func ExportMarkdownHTML(id, savePath string, docx, merge bool) (name, dom string
return
}
func ExportHTML(id, savePath string, pdf, image, keepFold, merge bool) (name, dom string) {
func ExportHTML(id, savePath string, pdf, image, keepFold, merge bool) (name, dom string, node *ast.Node) {
savePath = strings.TrimSpace(savePath)
bt := treenode.GetBlockTree(id)
@ -594,6 +594,7 @@ func ExportHTML(id, savePath string, pdf, image, keepFold, merge bool) (name, do
}
tree := prepareExportTree(bt)
node = treenode.GetNodeInTree(tree, id)
if merge {
var mergeErr error