From c2d1686164882df3ac0c0a9e61441ee05ba405c1 Mon Sep 17 00:00:00 2001 From: Liang Ding Date: Sun, 11 Dec 2022 12:17:43 +0800 Subject: [PATCH 1/2] =?UTF-8?q?:art:=20=E6=94=AF=E6=8C=81=E5=90=88?= =?UTF-8?q?=E5=B9=B6=E5=AD=90=E6=96=87=E6=A1=A3=E5=AF=BC=E5=87=BA=20Word/P?= =?UTF-8?q?DF=20https://github.com/siyuan-note/siyuan/issues/3219?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/util/onGetConfig.ts | 1 + kernel/api/export.go | 6 +++++- kernel/model/export.go | 10 +++++++++- kernel/model/export_merge.go | 2 +- 4 files changed, 16 insertions(+), 3 deletions(-) diff --git a/app/src/util/onGetConfig.ts b/app/src/util/onGetConfig.ts index e82b5c4bb..60c9d437f 100644 --- a/app/src/util/onGetConfig.ts +++ b/app/src/util/onGetConfig.ts @@ -391,6 +391,7 @@ const initWindow = () => { destroyPrintWindow(); fetchPost("/api/export/addPDFOutline", { id: ipcData.rootId, + merge: ipcData.mergeSubdocs, path: pdfFilePath }, () => { afterExport(pdfFilePath, msgId); diff --git a/kernel/api/export.go b/kernel/api/export.go index a5d0c7820..58cc11b50 100644 --- a/kernel/api/export.go +++ b/kernel/api/export.go @@ -290,7 +290,11 @@ func addPDFOutline(c *gin.Context) { id := arg["id"].(string) path := arg["path"].(string) - err := model.AddPDFOutline(id, path) + merge := false + if nil != arg["merge"] { + merge = arg["merge"].(bool) + } + err := model.AddPDFOutline(id, path, merge) if nil != err { ret.Code = -1 ret.Msg = err.Error() diff --git a/kernel/model/export.go b/kernel/model/export.go index debfedbcc..a3136cbd1 100644 --- a/kernel/model/export.go +++ b/kernel/model/export.go @@ -489,7 +489,7 @@ func processIFrame(tree *parse.Tree) { } } -func AddPDFOutline(id, p string) (err error) { +func AddPDFOutline(id, p string, merge bool) (err error) { inFile := p links, err := api.ListToCLinks(inFile) if nil != err { @@ -527,6 +527,14 @@ func AddPDFOutline(id, p string) (err error) { if nil == tree { return } + if merge { + var mergeErr error + tree, mergeErr = mergeSubDocs(tree) + if nil != mergeErr { + logging.LogErrorf("merge sub docs failed: %s", mergeErr) + return + } + } var headings []*ast.Node ast.Walk(tree.Root, func(n *ast.Node, entering bool) ast.WalkStatus { diff --git a/kernel/model/export_merge.go b/kernel/model/export_merge.go index 00ca2f024..e95961e91 100644 --- a/kernel/model/export_merge.go +++ b/kernel/model/export_merge.go @@ -84,7 +84,7 @@ func loadTreeNodes(box string, p string, level int) (ret []*ast.Node, err error) hLevel = 6 } - heading := &ast.Node{Type: ast.NodeHeading, HeadingLevel: hLevel} + heading := &ast.Node{ID: tree.Root.ID, Type: ast.NodeHeading, HeadingLevel: hLevel} heading.AppendChild(&ast.Node{Type: ast.NodeText, Tokens: []byte(tree.Root.IALAttr("title"))}) tree.Root.PrependChild(heading) for c := tree.Root.FirstChild; nil != c; c = c.Next { From 81527c7b7c9ccb061768805877de263f72c89de2 Mon Sep 17 00:00:00 2001 From: Liang Ding Date: Sun, 11 Dec 2022 17:48:29 +0800 Subject: [PATCH 2/2] =?UTF-8?q?:art:=20=E9=87=8D=E5=A4=8D=E5=89=AA?= =?UTF-8?q?=E8=97=8F=E7=9B=B8=E5=90=8C=E7=9A=84=E9=A1=B5=E9=9D=A2=E5=90=8E?= =?UTF-8?q?=E5=88=9B=E5=BB=BA=E7=9A=84=E6=96=87=E6=A1=A3=E4=B8=8D=E8=B7=9F?= =?UTF-8?q?=E9=9A=8F=E6=9C=BA=E6=95=B0=20Fix=20https://github.com/siyuan-n?= =?UTF-8?q?ote/siyuan/issues/6851?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- kernel/model/path.go | 4 ---- 1 file changed, 4 deletions(-) diff --git a/kernel/model/path.go b/kernel/model/path.go index e151a230b..1a4a4a101 100644 --- a/kernel/model/path.go +++ b/kernel/model/path.go @@ -24,7 +24,6 @@ import ( "sort" "strings" - "github.com/88250/gulu" "github.com/88250/lute/ast" "github.com/siyuan-note/logging" "github.com/siyuan-note/siyuan/kernel/search" @@ -35,9 +34,6 @@ import ( func createDocsByHPath(boxID, hPath, content string) (id string, existed bool, err error) { hPath = strings.TrimSuffix(hPath, ".sy") - if existed = nil != treenode.GetBlockTreeRootByHPath(boxID, hPath); existed { - hPath += "-" + gulu.Rand.String(7) - } pathBuilder := bytes.Buffer{} pathBuilder.WriteString("/") hPathBuilder := bytes.Buffer{}