展开菜单
首页 精品内容 本月促销 装机必备 Windows PDF教程 macOS软件 IOS软件 Android AI 专题
全部分类

当前位置:

首页 > 编程开发 > C#代码实现将PDF文件转换为Markdown格式

C#代码实现将PDF文件转换为Markdown格式

通过C#可将PDF转换为Markdown格式,提升编辑与跨平台兼容性。两种实现方式:直接加载文件保存为Markdown,或通过流处理减少内存占用、支持大文件。转换过程可保留文档结构,适用于Web发布与内容管理。

本文目录

    将 PDF 文档转换为更灵活、易编辑的格式(例如 Markdown)已经成为开发者和内容创作者常见的需求。把 PDF 转为 Markdown 文件,不仅方便后续编辑和版本管理,还能提升内容在不同平台和应用程序之间的兼容性,尤其适用于现代 Web 发布流程。

    C#代码实现将PDF文件转换为Markdown格式

    通过文档处理工具,开发者可以自动完成 PDF 到 Markdown 的转换,同时尽可能保留原始文档中的格式结构和内容信息。本教程将介绍如何使用 C# 实现 PDF 文档到 Markdown 格式的转换,并展示具体代码示例。

    准备工作

    在开始 PDF 转 Markdown 操作之前,需要先在 .NET 项目中配置相关文档处理组件。你可以通过下载对应程序集文件,或使用 NuGet 包管理器将所需依赖添加到项目中。

    PM> Install-Package Spire.PDF

    将 PDF 文档转换为 Markdown 文件

    通过 C# 开发,可以轻松实现 PDF 文档到 Markdown 格式的转换。首先加载目标 PDF 文件,然后将文档内容保存为 Markdown 格式。在转换过程中,可以指定 Markdown 输出格式,以生成可编辑、易管理的文本文件。

    具体步骤如下:

    1. 创建 PDF 文档处理对象。
    2. 加载需要转换的 PDF 文件。
    3. 将 PDF 文档转换并保存为 Markdown 文件。

    完整示例代码如下:

    using Spire.Pdf;
    
    namespace PDFToMarkdown
    {
        class Program
        {
            static void Main(string[] args)
            {
                // 创建 PdfDocument 类实例
                PdfDocument pdf = new PdfDocument();
    
                // 加载 PDF 文档
                pdf.LoadFromFile("Sample.pdf");
    
                // 将文档转换为 Markdown 文件
                pdf.Sa veToFile("output/PDFToMarkdown.md", FileFormat.Markdown);
    
                // 释放资源
                pdf.Close();
            }
        }
    }

    通过流(Stream)将 PDF 转换为 Markdown

    除了直接读取文件进行处理外,还可以通过流(Stream)的方式加载 PDF 文档,并将其转换为 Markdown 文件流。通过 LoadFromStream() 方法可以从数据流中读取 PDF 文档,再使用 Sa veToStream() 方法将转换后的内容保存为 Markdown 格式的数据流。

    使用流处理方式可以减少内存占用,支持处理较大的文件,同时便于实时数据传输,并简化与其他系统之间的数据交换。

    通过流方式将 PDF 文档转换为 Markdown 文件的具体步骤如下:

    1. 创建 PDF 文档的数据流对象,可以通过从网络下载文件或读取本地文件生成。
    2. 使用 PdfDocument.LoadFromStream(Stream stream) 方法从流中加载 PDF 文档。
    3. 创建新的流对象,用于存储转换后的 Markdown 文件。
    4. 使用 PdfDocument.Sa veToStream(Stream stream, FileFormat.Markdown) 方法将 PDF 文档转换为 Markdown 文件流。

    完整示例代码如下:

    using Spire.Pdf;
    using System.IO;
    using System.Net.Http;
    
    namespace PDFToMarkdownByStream
    {
        class Program
        {
            static async Task Main(string[] args)
            {
                // 创建 PdfDocument 类实例
                PdfDocument pdf = new PdfDocument();
    
                // 从 URL 下载 PDF 文档并转换为字节数组
                using (HttpClient client = new HttpClient())
                {
                    byte[] pdfBytes = await client.GetByteArrayAsync("http://example.com/Sample.pdf");
    
                    // 使用字节数组创建 MemoryStream
                    using (MemoryStream inputStream = new MemoryStream(pdfBytes))
                    {
                        // 从流中加载 PDF 文档
                        pdf.LoadFromStream(inputStream);
    
                        // 创建另一个 MemoryStream 对象用于存储 Markdown 文件
                        using (MemoryStream outputStream = new MemoryStream())
                        {
                            // 将 PDF 文档转换为 Markdown 文件流
                            pdf.Sa veToStream(outputStream, FileFormat.Markdown);
                            outputStream.Position = 0; // 重置流的位置,以便后续读取
    
                            // 上传转换后的流,或将其写入文件
                            await client.PostAsync("http://example.com/upload", new StreamContent(outputStream));
                            File.WriteAllBytes("output.md", outputStream.ToArray());
                        }
                    }
                }
    
                // 释放资源
                pdf.Close();
            }
        }
    }

    知识扩展

    在 C# 中将 PDF 转换为 Markdown,目前主要有两类方案:使用成熟的商业/开源库,或自行解析 PDF 并生成 Markdown。

    方案一:使用专业转换库(推荐)

    这是最省时省力的方式,市面上已有多个成熟的库可以直接完成转换。

    1. GroupDocs.Markdown for .NET

    GroupDocs 专门为文档转 Markdown 设计,支持精准导出标题、段落、列表、表格、链接、图片、引用块和代码块。

    using GroupDocs.Markdown;
    // 设置许可证(可选)
    License.Set("GroupDocs.Markdown.lic");
    // 实例化转换器
    var converter = new MarkdownConverter("business-plan.pdf");
    // 转换并保存
    converter.Convert("business-plan.md");

    默认情况下,图片会以 Base64 格式嵌入到输出文件中。如果希望将图片单独保存到文件夹:

    var converter = new MarkdownConverter("document.pdf");
    var convertOptions = new DocumentConverterOptions();
    convertOptions.ImageExportStrategy = new ExportImagesToFileSystemStrategy("./images");
    converter.Convert("output.md", convertOptions);
    • 特点:本地处理、无需网络、跨平台(Windows/Linux)、支持 .NET Framework 4.6.2+ 和 .NET 6.0+
    • 许可:商业库,需要授权

    2. Syncfusion Smart Data Extractor

    Syncfusion 的 Smart Data Extractor 库可以分析 PDF 中的文本块、表格、页眉和表单字段,保持布局和格式。

    using System.IO;
    using System.Text;
    using Syncfusion.SmartDataExtractor;
    
    // 打开 PDF 文件流
    using (FileStream stream = new FileStream("Input.pdf", FileMode.Open, FileAccess.Read))
    {
        // 初始化数据提取器
        DataExtractor extractor = new DataExtractor();
        
        // 提取为 Markdown
        string data = extractor.ExtractDataAsMarkdown(stream);
        
        // 保存为 Markdown 文件
        File.WriteAllText("Output.md", data, Encoding.UTF8);
    }

    提取特定页面:

    // 设置要提取的页面范围(第2页)
    extractor.PageRange = new int[,] { { 2, 2 } };
    string data = extractor.ExtractDataAsMarkdown(stream);
    • 特点:同样支持从扫描图像(PNG/JPG)中提取 Markdown
    • 许可:商业库(Syncfusion 有免费社区版,但功能受限)

    3. Aspose.PDF

    Aspose.PDF 提供了专门的 PdfToMarkdownConverter 用于 PDF 到 Markdown 的转换。

    using Aspose.Pdf;
    
    // 加载 PDF 文档
    var document = new Document("input.pdf");
    
    // 转换为 Markdown
    // Aspose.PDF 提供了 PdfToMarkdownConverter 类
    var converter = new PdfToMarkdownConverter();
    converter.Bind(document);
    converter.Sa ve("output.md");
    • 特点:功能全面,支持从文件、字节数组或流中加载 PDF
    • 许可:商业库(有 FOSS 版本,但功能有限)

    4. MarkItDown(开源免费)

    MarkItDown 是微软原版 MarkItDown Python 库的 C# 移植版,专为 LLM/RAG 工作流设计,支持 22+ 种文件格式。

    using ManagedCode.MarkItDown;
    
    // 安装 NuGet 包:dotnet add package ManagedCode.MarkItDown
    
    var converter = new MarkItDownConverter();
    var result = await converter.ConvertAsync("document.pdf");
    
    // result.Content 即为转换后的 Markdown 文本
    File.WriteAllText("output.md", result.Content);
    • 特点:原生 .NET 9、完全异步、流式处理大文件、内存高效
    • 许可:开源免费
    • 注意:项目较新,建议在非生产环境先验证转换质量

    方案二:自行解析 PDF(开源库组合)

    如果需要完全控制转换过程,或者预算有限,可以使用开源 PDF 解析库(如 PdfPig 或 iTextSharp)提取内容,然后自行生成 Markdown。

    使用 PdfPig 提取文本

    PdfPig 是 Apache PDFBox 的 C# 移植版,支持从 PDF 中读取文本和内容。

    using UglyToad.PdfPig;
    using UglyToad.PdfPig.Content;
    using System.Text;
    
    public string ConvertPdfToMarkdown(string pdfPath)
    {
        var sb = new StringBuilder();
        
        using (var pdf = PdfDocument.Open(pdfPath))
        {
            foreach (var page in pdf.GetPages())
            {
                // 提取页面文本
                var text = page.Text;
                
                // 这里需要自行解析文本结构,添加 Markdown 格式
                // 例如:识别标题、列表、表格等
                sb.AppendLine(text);
                sb.AppendLine(); // 页面分隔
            }
        }
        
        return sb.ToString();
    }

    总结

    将 PDF 转换为 Markdown 可以帮助开发者更方便地编辑、管理和发布文档内容。相比直接处理 PDF 文件,通过 Markdown 格式可以提升内容的可读性和跨平台兼容性,适用于网页发布、知识管理和内容处理等场景。

    本文介绍了两种使用 C# 实现 PDF 转 Markdown 的方法。第一种方法通过直接加载 PDF 文件并保存为 Markdown 格式,适用于常规文档转换需求;第二种方法基于流(Stream)处理 PDF 数据,可以减少内存占用,并支持从网络、本地文件或其他数据源读取和传输文档内容,更适合处理大型文件或集成到应用程序中。

    通过这些方法,开发者可以根据实际应用场景选择合适的转换方式,实现更加灵活、高效的 PDF 文档处理流程。

    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
    作者最新文章
    编程开发 markdown
    相关文章 更多
    精品专题 更多
    装机必备

    正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

    Windows

    正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

    PDF教程

    正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

    macOS软件

    正软商城macOS软件专区,精选适用于Mac电脑的办公、设计、影音、效率、开发和系统工具,提供软件功能介绍、macOS兼容版本、正版授权及购买下载服务。

    IOS软件

    正软商城iOS软件专区,精选适用于iPhone和iPad的办公、学习、影音、设计、效率及AI应用,提供功能介绍、适用设备、系统要求和正版获取方式等信息。

    AI

    正软商城AI软件专区,汇集AI写作、AI绘画、AI视频、AI办公、AI编程、AI翻译、智能客服和数据分析等人工智能工具,提供功能介绍、适用平台、收费方式及正版购买信息。

    Mac软件 更多
    AirBuddy 3 macOS版
    AirBuddy 3 macOS版

    AirBuddy 3 是面向 macOS 的蓝牙外设增强工具,可集中查看 AirPods、Beats 与苹果设备电量,提供快速连接、播放控制、电量提醒、桌面小组件和多台 Mac 外设接力等功能。

    AirServer macOS版
    AirServer macOS版

    AirServer macOS版可把 Mac 转换为无线投屏接收端,通过 AirPlay 或 Google Cast 接收手机、平板和电脑画面,并支持多设备同时连接、高清镜像及会话录制,适合家庭娱乐、课堂教学、会议演示和应用展示。

    AnyDesk macOS版
    AnyDesk macOS版

    AnyDesk macOS版是一款适用于远程办公、设备维护和客户支持的远程桌面工具,可连接并操作异地计算机,支持文件传输、无人值守访问、会话权限控制及跨平台协作。

    Beamer 4 macOS版
    Beamer 4 macOS版

    Beamer 4是面向macOS的本地视频投屏工具,可将Mac中的影片投放到Apple TV、Chromecast及兼容设备,支持常见格式、多类字幕、环绕声、播放列表和电视遥控操作。

    Boom 3D macOS版
    Boom 3D macOS版

    Boom 3D macOS版是一款系统级音效增强工具,可为音乐、电影、游戏和流媒体提供3D虚拟环绕声、31段均衡器、音量增强及应用独立音量控制,并支持本地播放器与多种音频输出设备。

    Boris FX macOS版
    Boris FX macOS版

    Boris FX macOS版是一套面向剪辑、合成、调色及动态图形工作的专业后期工具,涵盖视觉特效、平面与三维跟踪、转描、画面修复、粒子动画和音频清理,可配合多种主流宿主软件使用。

    Capto macOS版
    Capto macOS版

    Capto 是面向 macOS 的屏幕截图、高清录屏与媒体编辑工具,支持区域及整屏捕获、网页长截图、双音轨处理、图片和视频标注、素材分类与多渠道分享,适合教师、学生、内容创作者及需要制作演示教程的用户。

    ChemDraw macOS版
    ChemDraw macOS版

    ChemDraw macOS版是一款面向化学学习、科研和制药工作的专业结构绘图工具,可创建分子、反应及生物聚合物图形,并提供结构整理、格式转换和科研成果展示能力。

    Cursor Crane macOS版
    Cursor Crane macOS版

    Cursor Crane 是一款仅面向 macOS 的键盘操控效率工具,可通过提示标签、网格、文字查找和窗口模式完成点击、滚动、定位与切换,并支持屏幕内容提取、脚本及工作流扩展。

    Deep Freeze 冰点还原 macOS版
    Deep Freeze 冰点还原 macOS版

    Deep Freeze 冰点还原 macOS版通过冻结系统配置,让受保护的Mac在重新启动后回到预设状态,并提供解冻空间、维护计划、密码保护及Apple Remote Desktop管理能力。

    Focusky macOS版
    Focusky macOS版

    Focusky macOS版是一款面向教学课件、商务汇报、产品展示和动画宣传内容的演示制作工具。它通过无限画布、路径编排、缩放旋转转场及多媒体编辑,将传统逐页幻灯片转化为更具空间感的动态演示。

    Folder Colorizer 2 macOS版
    Folder Colorizer 2 macOS版

    Folder Colorizer 2 macOS版是一款直观的文件夹外观定制工具,可更换颜色,添加表情、贴纸及图片背景,并支持批量处理、智能推荐和恢复默认样式,帮助用户更快辨认工作、学习与生活资料。

    WINDOWS 更多
    讯飞绘文 网页版
    讯飞绘文 网页版

    讯飞绘文网页版是科大讯飞推出的AI图文创作与内容运营工具,覆盖热点选题、文章生成、稿件校对、智能配图、排版发布和数据复盘等环节,适合自媒体创作者及内容团队在线使用。

    AirServer Windows版
    AirServer Windows版

    AirServer Windows版可把电脑变成AirPlay、Google Cast和Miracast无线投屏接收端,适合会议演示、课堂教学及家庭大屏分享。发送设备通常无需另装客户端,并可同时接收和智能排列多个镜像会话。

    AlwaysUp Windows版
    AlwaysUp Windows版

    AlwaysUp是一款面向Windows的系统服务注册与程序托管工具,可让普通应用、脚本及批处理在无人登录时随系统启动,并通过状态检测、异常重启、资源监控和邮件通知保障关键任务持续运行。

    AnyDesk Windows版
    AnyDesk Windows版

    AnyDesk Windows版是一款轻量化远程桌面与技术支持工具,可用于控制异地电脑、传输文件、远程打印及无人值守访问。它兼顾连接响应、安全权限和部署灵活性,适合个人远程办公、企业设备维护与客服支持。

    Boom 3D Windows版
    Boom 3D Windows版

    Boom 3D Windows版是一款面向音乐、电影和游戏场景的系统级音效增强工具,支持虚拟3D环绕声、31段均衡器、预设音效、应用音量控制及本地音乐播放,可配合耳机、扬声器和蓝牙耳机使用。

    Boris FX Windows版
    Boris FX Windows版

    Boris FX Windows版是一套服务于影视剪辑、视觉特效、运动跟踪、转描、图像修饰及音频修复的专业创作工具集合,可作为插件接入多种主流后期宿主,也包含可独立运行的应用,适合剪辑师、特效师与内容创作者使用。

    ChemDraw Windows版
    ChemDraw Windows版

    ChemDraw Windows版是一款面向化学研究、药物研发、材料科学和教学工作的专业结构绘图工具,可快速绘制分子、反应式及生物聚合物,并提供结构整理、格式转换、性质计算和科研文档协作能力。

    CODESOFT Windows版
    CODESOFT Windows版

    CODESOFT Windows版是一套企业级条码与RFID标签设计打印工具,可连接Excel、Access、SQL及云端数据源,支持变量、表单、GS1条码、数据库记录和多种工业打印机,适合制造、仓储、物流及合规标识场景。

    Deep Freeze 冰点还原 Windows版
    Deep Freeze 冰点还原 Windows版

    Deep Freeze 冰点还原 Windows版通过重启恢复技术保护系统盘及指定分区,自动撤销恶意程序、误操作和配置漂移造成的改动,并支持密码保护、解冻空间与多硬盘管理,适合学校机房、公共电脑、办公终端及家庭电脑使用。

    EDIUS Windows版
    EDIUS Windows版

    EDIUS 11 Windows版是一款面向影视制作、广播电视、纪录片、短视频及教育机构的专业非线性编辑工具,支持4K/8K、多格式混编、HDR调色、字幕、音频处理和后台渲染,并提供素材管理及丰富的导出预设。

    FastStone Capture Windows版
    FastStone Capture Windows版

    FastStone Capture Windows版是一款轻量级屏幕捕捉、录屏与图像编辑工具,可截取窗口、区域、菜单和滚动页面,并提供标注、模糊、取色、OCR、录音录像及多格式导出能力,适合办公说明、教程制作和问题反馈。

    Focusky Windows版
    Focusky Windows版

    Focusky Windows版是一款动画演示与交互课件制作工具,通过无限画布、缩放旋转镜头、模板素材和对象动画组织内容,可导入PPTX,并输出视频、EXE、PDF、网页等格式,适用于课堂教学、微课、商务汇报及产品展示。