diff --git a/app/src/menus/commonMenuItem.ts b/app/src/menus/commonMenuItem.ts index fa4e0ca22..85c28afe7 100644 --- a/app/src/menus/commonMenuItem.ts +++ b/app/src/menus/commonMenuItem.ts @@ -711,6 +711,17 @@ export const exportMd = (id: string) => { openByMobile(response.data.zip); }); } + }, { + label: "RTF", + click: () => { + const msgId = showMessage(window.siyuan.languages.exporting, -1); + fetchPost("/api/export/exportRTF", { + id, + }, response => { + hideMessage(msgId); + openByMobile(response.data.zip); + }); + } }, ] } diff --git a/kernel/api/export.go b/kernel/api/export.go index 5ff7f3a09..c4ca4acbd 100644 --- a/kernel/api/export.go +++ b/kernel/api/export.go @@ -31,6 +31,23 @@ import ( "github.com/siyuan-note/siyuan/kernel/util" ) +func exportRTF(c *gin.Context) { + ret := gulu.Ret.NewResult() + defer c.JSON(http.StatusOK, ret) + + arg, ok := util.JsonArg(c, ret) + if !ok { + return + } + + id := arg["id"].(string) + name, zipPath := model.ExportPandocConvertZip(id, "rtf", ".rtf") + ret.Data = map[string]interface{}{ + "name": name, + "zip": zipPath, + } +} + func exportODT(c *gin.Context) { ret := gulu.Ret.NewResult() defer c.JSON(http.StatusOK, ret) diff --git a/kernel/api/router.go b/kernel/api/router.go index 9168a757a..22b5fe39d 100644 --- a/kernel/api/router.go +++ b/kernel/api/router.go @@ -252,6 +252,7 @@ func ServeAPI(ginServer *gin.Engine) { ginServer.Handle("POST", "/api/export/exportOrgMode", model.CheckAuth, exportOrgMode) ginServer.Handle("POST", "/api/export/exportMediaWiki", model.CheckAuth, exportMediaWiki) ginServer.Handle("POST", "/api/export/exportODT", model.CheckAuth, exportODT) + ginServer.Handle("POST", "/api/export/exportRTF", model.CheckAuth, exportRTF) ginServer.Handle("POST", "/api/import/importStdMd", model.CheckAuth, model.CheckReadonly, importStdMd) ginServer.Handle("POST", "/api/import/importData", model.CheckAuth, model.CheckReadonly, importData) diff --git a/kernel/model/export.go b/kernel/model/export.go index bba3074c1..01b9ff466 100644 --- a/kernel/model/export.go +++ b/kernel/model/export.go @@ -1997,6 +1997,7 @@ func exportPandocConvertZip(boxID, baseFolderName string, docPaths []string, box := Conf.Box(boxID) exportFolder := filepath.Join(util.TempDir, "export", baseFolderName+ext) + os.RemoveAll(exportFolder) if err := os.MkdirAll(exportFolder, 0755); nil != err { logging.LogErrorf("create export temp folder failed: %s", err) return diff --git a/kernel/util/pandoc.go b/kernel/util/pandoc.go index 0daec3d48..c9d68cf4e 100644 --- a/kernel/util/pandoc.go +++ b/kernel/util/pandoc.go @@ -35,6 +35,7 @@ func Pandoc(from, to, o, content string) (ret string, err error) { args := []string{ "--from", from, "--to", to, + "-s", } if "" != o {