LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

用C#提取PDF文件中的表格并導出為HTML格式頁面

admin
2025年8月4日 13:18 本文熱度 549

在C#中提取PDF表格并轉換為HTML,推薦使用開源庫iTextSharp(針對結構化PDF)和PdfPig(針對復雜布局)。以下是兩種實現方案:

方案1:使用iTextSharp(推薦格式良好的PDF)

// 安裝NuGet包:Install-Package iTextSharp

using iTextSharp.text.pdf;

using iTextSharp.text.pdf.parser;

using System.Text;

using System.IO;


public class PdfTableExtractor

{

    public static string ExtractTableToHtml(string pdfPath)

    {

        var html = new StringBuilder();

        html.AppendLine("<table border='1'>");


        using (var reader = new PdfReader(pdfPath))

        {

            for (int page = 1; page <= reader.NumberOfPages; page++)

            {

                var strategy = new SimpleTextExtractionStrategy();

                string text = PdfTextExtractor.GetTextFromPage(reader, page, strategy);


                // 簡單示例:按行分割(實際需更復雜解析)

                foreach (var line in text.Split('\n'))

                {

                    if (line.Contains("|")) // 假設表格使用豎線分隔

                    {

                        html.AppendLine("<tr>");

                        foreach (var cell in line.Split('|'))

                        {

                            html.AppendLine($"<td>{cell.Trim()}</td>");

                        }

                        html.AppendLine("</tr>");

                    }

                }

            }

        }


        html.AppendLine("</table>");

        return html.ToString();

    }

}


// 使用示例

string htmlTable = PdfTableExtractor.ExtractTableToHtml("input.pdf");

File.WriteAllText("output.html", htmlTable);

注意:此方案僅適用于結構簡單的PDF表格。復雜表格需使用LocationTextExtractionStrategy解析坐標。

方案2:使用PdfPig(處理復雜布局)

// 安裝NuGet包:Install-Package PdfPig

using UglyToad.PdfPig;

using System.Text;

using System.Collections.Generic;


public class PdfPigTableExtractor

{

    public static string ExtractTables(string pdfPath)

    {

        var html = new StringBuilder();

        html.AppendLine("<table border='1' style='border-collapse:collapse'>");


        using (var document = PdfDocument.Open(pdfPath))

        {

            foreach (var page in document.GetPages())

            {

                var words = page.GetWords();

                var lines = GroupWordsIntoLines(words);


                foreach (var line in lines)

                {

                    html.AppendLine("<tr>");

                    foreach (var word in line)

                    {

                        html.Append($"<td>{word.Text}</td>");

                    }

                    html.AppendLine("</tr>");

                }

            }

        }


        html.AppendLine("</table>");

        return html.ToString();

    }


    private static List<List<Word>> GroupWordsIntoLines(IEnumerable<Word> words)

    {

        // 按Y坐標分組(同一行)

        var grouped = new Dictionary<double, List<Word>>();

        foreach (var word in words)

        {

            var y = Math.Round(word.BoundingBox.Bottom, 1);

            if (!grouped.ContainsKey(y)) grouped[y] = new List<Word>();

            grouped[y].Add(word);

        }


        // 按行排序(從上到下)

        return grouped.OrderByDescending(g => g.Key)

                      .Select(g => g.Value.OrderBy(w => w.BoundingBox.Left).ToList())

                      .ToList();

    }

}


// 使用示例

string html = PdfPigTableExtractor.ExtractTables("input.pdf");

File.WriteAllText("table.html", html);

處理復雜表格的改進建議

  1. 列檢測:統計單詞X坐標聚類,自動識別列邊界

  2. 單元格合并:通過空白區域檢測跨行/跨列單元格

  3. 使用專用庫

示例HTML輸出結構

<table border='1'>

  <tr>

    <td>Header 1</td>

    <td>Header 2</td>

  </tr>

  <tr>

    <td>Row 1 Cell 1</td>

    <td>Row 1 Cell 2</td>

  </tr>

</table>

提示:對于生產環境,建議結合PDF解析庫(提取原始數據)+ HTML生成庫(如HtmlAgilityPack)構建更健壯的解決方案。復雜PDF可能需要OCR預處理。


該文章在 2025/8/4 14:42:03 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved

黄频国产免费高清视频,久久不卡精品中文字幕一区,激情五月天AV电影在线观看,欧美国产韩国日本一区二区
一区二区三区在线不卡 | 日本美女高潮视频免费 | 在线观看免费视频色 | 夜鲁夜鲁夜鲁很鲁在线视频 | 伊人色综合久久天天网 | 午夜福利网站你懂得 |