最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#代碼實(shí)現(xiàn)將PDF文件轉(zhuǎn)換為Markdown格式

 更新時(shí)間:2026年07月26日 08:57:31   作者:2501_93070778  
將 PDF 文檔轉(zhuǎn)換為更靈活、易編輯的格式(例如 Markdown)已經(jīng)成為開發(fā)者和內(nèi)容創(chuàng)作者常見的需求,本教程將介紹如何使用 C# 實(shí)現(xiàn) PDF 文檔到 Markdown 格式的轉(zhuǎn)換,并展示具體代碼示例,有需要的小伙伴可以了解下

將 PDF 文檔轉(zhuǎn)換為更靈活、易編輯的格式(例如 Markdown)已經(jīng)成為開發(fā)者和內(nèi)容創(chuàng)作者常見的需求。將 PDF 轉(zhuǎn)換為 Markdown 文件,不僅方便后續(xù)編輯和版本管理,還能提升內(nèi)容在不同平臺(tái)和應(yīng)用程序之間的兼容性,尤其適用于現(xiàn)代 Web 發(fā)布流程。

通過文檔處理工具,開發(fā)者可以自動(dòng)完成 PDF 到 Markdown 的轉(zhuǎn)換,同時(shí)盡可能保留原始文檔中的格式結(jié)構(gòu)和內(nèi)容信息。本教程將介紹如何使用 C# 實(shí)現(xiàn) PDF 文檔到 Markdown 格式的轉(zhuǎn)換,并展示具體代碼示例。

準(zhǔn)備工作

在開始 PDF 轉(zhuǎn) Markdown 操作之前,需要先在 .NET 項(xiàng)目中配置相關(guān)文檔處理組件。您可以通過下載對(duì)應(yīng)程序集文件,或使用 NuGet 包管理器將所需依賴添加到項(xiàng)目中。

PM> Install-Package Spire.PDF

將 PDF 文檔轉(zhuǎn)換為 Markdown 文件

通過 C# 開發(fā),可以輕松實(shí)現(xiàn) PDF 文檔到 Markdown 格式的轉(zhuǎn)換。首先加載目標(biāo) PDF 文件,然后將文檔內(nèi)容保存為 Markdown 格式。在轉(zhuǎn)換過程中,可以指定 Markdown 輸出格式,以生成可編輯、易管理的文本文件。

將 PDF 轉(zhuǎn)換為 Markdown 文件的具體步驟如下:

  1. 創(chuàng)建 PDF 文檔處理對(duì)象。
  2. 加載需要轉(zhuǎn)換的 PDF 文件。
  3. 將 PDF 文檔轉(zhuǎn)換并保存為 Markdown 文件。

完整示例代碼如下:

using Spire.Pdf;

namespace PDFToMarkdown
{
    class Program
    {
        static void Main(string[] args)
        {
            // 創(chuàng)建 PdfDocument 類實(shí)例
            PdfDocument pdf = new PdfDocument();

            // 加載 PDF 文檔
            pdf.LoadFromFile("Sample.pdf");

            // 將文檔轉(zhuǎn)換為 Markdown 文件
            pdf.SaveToFile("output/PDFToMarkdown.md", FileFormat.Markdown);

            // 釋放資源
            pdf.Close();
        }
    }
}

通過流(Stream)將 PDF 轉(zhuǎn)換為 Markdown

除了直接讀取文件進(jìn)行處理外,還可以通過流(Stream)的方式加載 PDF 文檔,并將其轉(zhuǎn)換為 Markdown 文件流。通過 LoadFromStream() 方法可以從數(shù)據(jù)流中讀取 PDF 文檔,再使用 SaveToStream() 方法將轉(zhuǎn)換后的內(nèi)容保存為 Markdown 格式的數(shù)據(jù)流。

使用流處理方式可以減少內(nèi)存占用,支持處理較大的文件,同時(shí)便于實(shí)時(shí)數(shù)據(jù)傳輸,并簡(jiǎn)化與其他系統(tǒng)之間的數(shù)據(jù)交換。

通過流方式將 PDF 文檔轉(zhuǎn)換為 Markdown 文件的具體步驟如下:

  1. 創(chuàng)建 PDF 文檔的數(shù)據(jù)流對(duì)象,可以通過從網(wǎng)絡(luò)下載文件或讀取本地文件生成。
  2. 使用 PdfDocument.LoadFromStream(Stream stream) 方法從流中加載 PDF 文檔。
  3. 創(chuàng)建新的流對(duì)象,用于存儲(chǔ)轉(zhuǎn)換后的 Markdown 文件。
  4. 使用 PdfDocument.SaveToStream(Stream stream, FileFormat.Markdown) 方法將 PDF 文檔轉(zhuǎn)換為 Markdown 文件流。

完整示例代碼如下:

using Spire.Pdf;
using System.IO;
using System.Net.Http;

namespace PDFToMarkdownByStream
{
    class Program
    {
        static async Task Main(string[] args)
        {
            // 創(chuàng)建 PdfDocument 類實(shí)例
            PdfDocument pdf = new PdfDocument();

            // 從 URL 下載 PDF 文檔并轉(zhuǎn)換為字節(jié)數(shù)組
            using (HttpClient client = new HttpClient())
            {
                byte[] pdfBytes = await client.GetByteArrayAsync("http://example.com/Sample.pdf");

                // 使用字節(jié)數(shù)組創(chuàng)建 MemoryStream
                using (MemoryStream inputStream = new MemoryStream(pdfBytes))
                {
                    // 從流中加載 PDF 文檔
                    pdf.LoadFromStream(inputStream);

                    // 創(chuàng)建另一個(gè) MemoryStream 對(duì)象用于存儲(chǔ) Markdown 文件
                    using (MemoryStream outputStream = new MemoryStream())
                    {
                        // 將 PDF 文檔轉(zhuǎn)換為 Markdown 文件流
                        pdf.SaveToStream(outputStream, FileFormat.Markdown);
                        outputStream.Position = 0; // 重置流的位置,以便后續(xù)讀取

                        // 上傳轉(zhuǎn)換后的流,或?qū)⑵鋵懭胛募?
                        await client.PostAsync("http://example.com/upload", new StreamContent(outputStream));
                        File.WriteAllBytes("output.md", outputStream.ToArray());
                    }
                }
            }

            // 釋放資源
            pdf.Close();
        }
    }
}

知識(shí)擴(kuò)展

在C# 中將 PDF 轉(zhuǎn)換為 Markdown,目前主要有兩類方案:使用成熟的商業(yè)/開源庫,或自行解析 PDF 并生成 Markdown。

方案一:使用專業(yè)轉(zhuǎn)換庫(推薦)

這是最省時(shí)省力的方式,市面上已有多個(gè)成熟的庫可以直接完成轉(zhuǎn)換。

1. GroupDocs.Markdown for .NET

GroupDocs 專門為文檔轉(zhuǎn) Markdown 設(shè)計(jì),支持精準(zhǔn)導(dǎo)出標(biāo)題、段落、列表、表格、鏈接、圖片、引用塊和代碼塊。

using GroupDocs.Markdown;
// 設(shè)置許可證(可選)
License.Set("GroupDocs.Markdown.lic");
// 實(shí)例化轉(zhuǎn)換器
var converter = new MarkdownConverter("business-plan.pdf");
// 轉(zhuǎn)換并保存
converter.Convert("business-plan.md");

默認(rèn)情況下,圖片會(huì)以 Base64 格式嵌入到輸出文件中。如果希望將圖片單獨(dú)保存到文件夾:

var converter = new MarkdownConverter("document.pdf");
var convertOptions = new DocumentConverterOptions();
convertOptions.ImageExportStrategy = new ExportImagesToFileSystemStrategy("./images");
converter.Convert("output.md", convertOptions);
  • 特點(diǎn):本地處理、無需網(wǎng)絡(luò)、跨平臺(tái)(Windows/Linux)、支持 .NET Framework 4.6.2+ 和 .NET 6.0+
  • 許可:商業(yè)庫,需要授權(quán)

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))
{
    // 初始化數(shù)據(jù)提取器
    DataExtractor extractor = new DataExtractor();
    
    // 提取為 Markdown
    string data = extractor.ExtractDataAsMarkdown(stream);
    
    // 保存為 Markdown 文件
    File.WriteAllText("Output.md", data, Encoding.UTF8);
}

提取特定頁面:

// 設(shè)置要提取的頁面范圍(第2頁)
extractor.PageRange = new int[,] { { 2, 2 } };
string data = extractor.ExtractDataAsMarkdown(stream);
  • 特點(diǎn):同樣支持從掃描圖像(PNG/JPG)中提取 Markdown
  • 許可:商業(yè)庫(Syncfusion 有免費(fèi)社區(qū)版,但功能受限)

3. Aspose.PDF

Aspose.PDF 提供了專門的 PdfToMarkdownConverter 用于 PDF 到 Markdown 的轉(zhuǎn)換。

using Aspose.Pdf;

// 加載 PDF 文檔
var document = new Document("input.pdf");

// 轉(zhuǎn)換為 Markdown
// Aspose.PDF 提供了 PdfToMarkdownConverter 類
var converter = new PdfToMarkdownConverter();
converter.Bind(document);
converter.Save("output.md");
  • 特點(diǎn):功能全面,支持從文件、字節(jié)數(shù)組或流中加載 PDF
  • 許可:商業(yè)庫(有 FOSS 版本,但功能有限)

4. MarkItDown(開源免費(fèi))

MarkItDown 是微軟原版 MarkItDown Python 庫的 C# 移植版,專為 LLM/RAG 工作流設(shè)計(jì),支持 22+ 種文件格式。

using ManagedCode.MarkItDown;

// 安裝 NuGet 包:dotnet add package ManagedCode.MarkItDown

var converter = new MarkItDownConverter();
var result = await converter.ConvertAsync("document.pdf");

// result.Content 即為轉(zhuǎn)換后的 Markdown 文本
File.WriteAllText("output.md", result.Content);
  • 特點(diǎn):原生 .NET 9、完全異步、流式處理大文件、內(nèi)存高效
  • 許可:開源免費(fèi)
  • 注意:項(xiàng)目較新,建議在非生產(chǎn)環(huán)境先驗(yàn)證轉(zhuǎn)換質(zhì)量

方案二:自行解析 PDF(開源庫組合)

如果需要完全控制轉(zhuǎn)換過程,或者預(yù)算有限,可以使用開源 PDF 解析庫(如 PdfPig 或 iTextSharp)提取內(nèi)容,然后自行生成 Markdown。

使用 PdfPig 提取文本

PdfPig 是 Apache PDFBox 的 C# 移植版,支持從 PDF 中讀取文本和內(nèi)容。

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;
            
            // 這里需要自行解析文本結(jié)構(gòu),添加 Markdown 格式
            // 例如:識(shí)別標(biāo)題、列表、表格等
            sb.AppendLine(text);
            sb.AppendLine(); // 頁面分隔
        }
    }
    
    return sb.ToString();
}

總結(jié)

將 PDF 轉(zhuǎn)換為 Markdown 可以幫助開發(fā)者更方便地編輯、管理和發(fā)布文檔內(nèi)容。相比直接處理 PDF 文件,通過 Markdown 格式可以提升內(nèi)容的可讀性和跨平臺(tái)兼容性,適用于網(wǎng)頁發(fā)布、知識(shí)管理和內(nèi)容處理等場(chǎng)景。

本文介紹了兩種使用 C# 實(shí)現(xiàn) PDF 轉(zhuǎn) Markdown 的方法。第一種方法通過直接加載 PDF 文件并保存為 Markdown 格式,適用于常規(guī)文檔轉(zhuǎn)換需求;第二種方法基于流(Stream)處理 PDF 數(shù)據(jù),可以減少內(nèi)存占用,并支持從網(wǎng)絡(luò)、本地文件或其他數(shù)據(jù)源讀取和傳輸文檔內(nèi)容,更適合處理大型文件或集成到應(yīng)用程序中。

通過這些方法,開發(fā)者可以根據(jù)實(shí)際應(yīng)用場(chǎng)景選擇合適的轉(zhuǎn)換方式,實(shí)現(xiàn)更加靈活、高效的 PDF 文檔處理流程。

以上就是C#代碼實(shí)現(xiàn)將PDF文件轉(zhuǎn)換為Markdown格式的詳細(xì)內(nèi)容,更多關(guān)于C#實(shí)現(xiàn)PDF轉(zhuǎn)Markdown的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 協(xié)定需要會(huì)話,但是綁定“BasicHttpBinding”不支持它或者因配置不正確而無法支持它

    協(xié)定需要會(huì)話,但是綁定“BasicHttpBinding”不支持它或者因配置不正確而無法支持它

    在IIS7及以上版本服務(wù)器中提供了基于WAS的無.SVC文件的WCF服務(wù)激活功能,能夠提供基于HTTP和非HTTP協(xié)議的訪問,通過添加Windows Server AppFabric可以更方便的管理WCF服務(wù)
    2012-12-12
  • 十大C#中最具價(jià)值的語法糖分享

    十大C#中最具價(jià)值的語法糖分享

    C#語言是世界最優(yōu)雅的語言之一,深受廣大程序員的喜歡,尤其是其中的一些語法糖,下面就跟隨小編一起來了解一下其中10個(gè)比較實(shí)用的語法糖吧
    2024-11-11
  • CPF?使用C#的Native?AOT?發(fā)布程序的詳細(xì)過程

    CPF?使用C#的Native?AOT?發(fā)布程序的詳細(xì)過程

    這篇文章主要介紹了CPF?使用C#的Native?AOT?發(fā)布程序,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具體一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-03-03
  • 如何使用C#代碼創(chuàng)建快捷方式文件詳解

    如何使用C#代碼創(chuàng)建快捷方式文件詳解

    在Windows中創(chuàng)建快捷方式很簡(jiǎn)單,如果想用C#代碼的方式創(chuàng)建,就沒有那么方便了,因?yàn)?NET框架沒有提供直接創(chuàng)建快捷方式的方法。這篇文章主要給大家介紹了關(guān)于如何使用C#代碼創(chuàng)建快捷方式文件的相關(guān)資料,需要的朋友可以參考下
    2018-08-08
  • Unity AssetBundle打包工具示例詳解

    Unity AssetBundle打包工具示例詳解

    這篇文章主要介紹了Unity AssetBundle打包工具,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-10-10
  • C# 數(shù)組實(shí)例介紹(圖文)

    C# 數(shù)組實(shí)例介紹(圖文)

    數(shù)組即是一組相同類型組合在一起,使用一個(gè)通用的名稱,通過分配的下標(biāo)訪問的數(shù)據(jù)集合中的元素。
    2014-08-08
  • 關(guān)于C#線程的全面解析

    關(guān)于C#線程的全面解析

    這篇文章主要介紹了關(guān)于C#線程的全面解析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • 詳解StackExchange.Redis通用封裝類分享

    詳解StackExchange.Redis通用封裝類分享

    這篇文章主要介紹了詳解StackExchange.Redis通用封裝類分享 ,詳細(xì)的介紹了StackExchange.Redis通用封裝,具有一定的參考價(jià)值,有需要的可以了解一下。
    2016-12-12
  • C#實(shí)現(xiàn)gRPC服務(wù)和調(diào)用示例詳解

    C#實(shí)現(xiàn)gRPC服務(wù)和調(diào)用示例詳解

    gRPC?是一種與語言無關(guān)的高性能遠(yuǎn)程過程調(diào)用?(RPC)?框架,這篇文章主要為大家詳細(xì)介紹了C#如何實(shí)現(xiàn)gRPC服務(wù)和調(diào)用,需要的可以參考一下
    2024-01-01
  • WPF實(shí)現(xiàn)獲取攝像頭幀圖的代碼示例

    WPF實(shí)現(xiàn)獲取攝像頭幀圖的代碼示例

    這篇文章主要介紹了如何利用WPF實(shí)現(xiàn)獲取攝像頭幀圖的代碼示例,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)或工作有一定幫助,感興趣的可以參考一下
    2024-02-02

最新評(píng)論

镇坪县| 玛纳斯县| 咸丰县| 辽中县| 南阳市| 汶川县| 绥江县| 柏乡县| 正阳县| 萨迦县| 木里| 三明市| 安乡县| 灌阳县| 平乐县| 兴安盟| 西宁市| 黄浦区| 洞口县| 育儿| 建德市| 宁陕县| 柳林县| 阳东县| 邢台市| 马山县| 肥东县| 金川县| 河间市| 胶州市| 横山县| 盱眙县| 营山县| 象山县| 扶绥县| 阿克| 白银市| 湘乡市| 雅安市| 红桥区| 浪卡子县|