From 9aca165875b5339e2043948b47fefccca7a8c01d Mon Sep 17 00:00:00 2001 From: Liang Ding Date: Wed, 17 May 2023 15:37:39 +0800 Subject: [PATCH] :art: Support for embedding images when exporting EPUB, ODT and RTF Fix https://github.com/siyuan-note/siyuan/issues/8288 --- kernel/model/export.go | 30 +++++++++++++++--------------- kernel/util/pandoc.go | 1 + 2 files changed, 16 insertions(+), 15 deletions(-) diff --git a/kernel/model/export.go b/kernel/model/export.go index b6dba1430..2e529443f 100644 --- a/kernel/model/export.go +++ b/kernel/model/export.go @@ -1032,7 +1032,7 @@ func BatchExportMarkdown(boxID, folderPath string) (zipPath string) { for _, docFile := range docFiles { docPaths = append(docPaths, docFile.path) } - zipPath = exportPandocConvertZip(boxID, baseFolderName, docPaths, "", "md", ".md") + zipPath = exportPandocConvertZip(boxID, baseFolderName, docPaths, "", "", ".md") return } @@ -2030,20 +2030,6 @@ func exportPandocConvertZip(boxID, baseFolderName string, docPaths []string, continue } - // 调用 Pandoc 进行格式转换 - output, err := util.Pandoc(pandocFrom, pandocTo, writePath, md) - if nil != err { - logging.LogErrorf("pandoc failed: %s", err) - continue - } - - if "odt" != pandocTo && "epub" != pandocTo && "rtf" != pandocTo { - if err := gulu.File.WriteFileSafer(writePath, gulu.Str.ToBytes(output), 0644); nil != err { - logging.LogErrorf("write export markdown file [%s] failed: %s", writePath, err) - continue - } - } - // 解析导出后的标准 Markdown,汇总 assets tree := parse.Parse("", gulu.Str.ToBytes(md), luteEngine.ParseOptions) var assets []string @@ -2067,6 +2053,20 @@ func exportPandocConvertZip(boxID, baseFolderName string, docPaths []string, continue } } + + // 调用 Pandoc 进行格式转换 + output, err := util.Pandoc(pandocFrom, pandocTo, writePath, md) + if nil != err { + logging.LogErrorf("pandoc failed: %s", err) + continue + } + + if "odt" != pandocTo && "epub" != pandocTo && "rtf" != pandocTo { + if err := gulu.File.WriteFileSafer(writePath, gulu.Str.ToBytes(output), 0644); nil != err { + logging.LogErrorf("write export markdown file [%s] failed: %s", writePath, err) + continue + } + } } zipPath = exportFolder + ".zip" diff --git a/kernel/util/pandoc.go b/kernel/util/pandoc.go index f46d6208d..c3a13a0cf 100644 --- a/kernel/util/pandoc.go +++ b/kernel/util/pandoc.go @@ -58,6 +58,7 @@ func Pandoc(from, to, o, content string) (ret string, err error) { args := []string{ "--from", from, "--to", to, + "--resource-path", filepath.Dir(o), "-s", }