🎨 导出 PDF 和 Word 时支持覆盖已有文件 https://github.com/siyuan-note/siyuan/issues/5309

This commit is contained in:
Liang Ding 2022-07-19 21:40:16 +08:00
parent c48e04fc16
commit c819b63fa7
No known key found for this signature in database
GPG key ID: 136F30F901A2231D
2 changed files with 36 additions and 3 deletions

View file

@ -121,8 +121,30 @@ const getExportPath = (option: { type: string, id: string }, pdfOption?: PrintTo
lockFile(response.data);
return;
}
let exportType = "HTML (SiYuan)"
let extension = "html"
switch (option.type) {
case "htmlmd":
exportType = "HTML (Markdown)";
break;
case "word":
exportType = "Word .docx";
extension = "docx";
break;
case "pdf":
exportType = "PDF";
extension = "pdf";
break;
}
dialog.showSaveDialog({
defaultPath: response.data.rootTitle,
title: window.siyuan.languages.export + " " + exportType,
defaultPath: response.data.rootTitle + "." + extension,
filters: [{
name: "Word",
extensions: [extension]
}],
properties: ["showOverwriteConfirmation"],
}).then((result: SaveDialogReturnValue) => {
if (!result.canceled) {

View file

@ -180,13 +180,17 @@ func ExportDocx(id, savePath string) (err error) {
return errors.New(msg)
}
if err = gulu.File.Copy(tmpDocxPath, filepath.Join(savePath, name+".docx")); nil != err {
if 1 < strings.Count(savePath, filepath.Base(savePath)) {
savePath = filepath.Dir(savePath)
}
if err = gulu.File.Copy(tmpDocxPath, savePath); nil != err {
logging.LogErrorf("export docx failed: %s", err)
return errors.New(fmt.Sprintf(Conf.Language(14), err))
}
tmpAssets := filepath.Join(tmpDir, "assets")
if gulu.File.IsDir(tmpAssets) {
if err = gulu.File.Copy(tmpAssets, filepath.Join(savePath, "assets")); nil != err {
if err = gulu.File.Copy(tmpAssets, filepath.Join(filepath.Dir(savePath), "assets")); nil != err {
logging.LogErrorf("export docx failed: %s", err)
return errors.New(fmt.Sprintf(Conf.Language(14), err))
}
@ -199,6 +203,9 @@ func ExportMarkdownHTML(id, savePath string, docx bool) (name, dom string) {
tree = exportTree(tree, true)
name = path.Base(tree.HPath)
if 1 < strings.Count(savePath, filepath.Base(savePath)) {
savePath = filepath.Dir(savePath)
}
if err := os.MkdirAll(savePath, 0755); nil != err {
logging.LogErrorf("mkdir [%s] failed: %s", savePath, err)
@ -283,6 +290,10 @@ func ExportHTML(id, savePath string, pdf bool) (name, dom string) {
tree = exportTree(tree, true)
name = path.Base(tree.Path)
if 1 < strings.Count(savePath, filepath.Base(savePath)) {
savePath = filepath.Dir(savePath)
}
if err := os.MkdirAll(savePath, 0755); nil != err {
logging.LogErrorf("mkdir [%s] failed: %s", savePath, err)
return