将Word文档转换成Markdown文本可以提高内容的可移植性,方便在不同的平台编辑和发布文档内容。特别是在内容管理、博客发布、技术写作等场景中,将Word文档转换为Markdown格式的可以极大地方便内容创作者。本文将探讨在.NET框架下,利用现有的工具和技术,实现Word文档向Markdown格式的转换,提供步骤介绍以及代码示例。

  • 用C#将Word文档直接转换为Markdown文件
  • 移除Word文档图片并将其转换为Markdown格式

本文所使用的方法需要用到Spire.Doc for .NET,NuGet:PM> Install-Package Spire.Doc

申请免费License

用C#将Word文档直接转换为Markdown文件

我们可以通过加载文档使用Document.LoadFromFile()方法,然后使用Document.SaveToFile(filename: String, FileFormat.Markdown)方法将其转换为Markdown文件。操作步骤示例:

  1. 导入所需模块。
  2. 创建 Document 类的实例。
  3. 使用 Document.LoadFromFile() 方法加载 Word 文档。
  4. 使用 Document.SaveToFile(filename: String, FileFormat.Markdown) 方法将文档转换为 Markdown 文件。
  5. 释放资源。

代码示例

using Spire.Doc;

namespace WordToMarkdown
{
    class Program
    {
        static void Main(string[] args)
        {
            // 创建Document类的实例
            Document doc = new Document();

            // 加载一个Word文档
            doc.LoadFromFile("示例.docx");

            // 将文档转换为Markdown文件
            doc.SaveToFile("output/WordToMarkdown.md", FileFormat.Markdown);
            doc.Dispose();
        }
    }
}

结果
.NET转换Word为Markdown

移除Word文档图片并将其转换为Markdown格式

使用上面的方法将Word文档转换为Markdown文件时,图片会默认以Base64编码存储在Markdown代码中,可能会使转换出的文件过大且影响兼容性。为了应对这一问题,我们可以在转换过程中移除图片,在后续编辑中以链接形式添加相应图片。操作步骤示例:

  1. 导入所需模块。
  2. 创建 Document 类的实例。
  3. 使用 Document.LoadFromFile() 方法加载 Word 文档。
  4. 遍历文档中的各部分,再遍历段落。
  5. 遍历段落中的文档对象:

    • 通过 Paragraph.ChildObjects[] 属性获取文档对象。
    • 检查其是否是 DocPicture 类的实例。如果是,则使用 Paragraph.ChildObjects.Remove(DocumentObject) 方法将其从段落中移除。
  6. 使用 Document.SaveToFile(filename: String, FileFormat.Markdown) 方法将文档转换为 Markdown 文件。
  7. 释放资源。

代码示例

using Spire.Doc;
using Spire.Doc.Documents;
using Spire.Doc.Fields;

namespace WordToMarkdownNoImage
{
    class Program
    {
        static void Main(string[] args)
        {
            // 创建Document类的实例
            Document doc = new Document();

            // 加载一个Word文档
            doc.LoadFromFile("示例.docx");

            // 遍历文档中的各个部分
            foreach (Section section in doc.Sections)
            {
                // 遍历部分中的各个段落
                foreach (Paragraph paragraph in section.Paragraphs)
                {
                    // 遍历段落中的文档对象
                    for (int i = 0; i < paragraph.ChildObjects.Count; i++)
                    {
                        // 获取一个文档对象
                        DocumentObject docObj = paragraph.ChildObjects[i];
                        // 检查它是否是DocPicture类的实例
                        if (docObj is DocPicture)
                        {
                            // 移除DocPicture实例
                            paragraph.ChildObjects.Remove(docObj);
                        }
                    }
                }
            }

            // 将文档转换为Markdown文件
            doc.SaveToFile("output/WordToMarkdownNoImage.md", FileFormat.Markdown);
            doc.Dispose();
        }
    }
}

结果
.NET将Word转换为Markdown并删除图片

本文演示了如何使用C#代码在.NET程序中实现Word文档转Markdown格式。


大丸子
12 声望3 粉丝