IRONSOFTWAREHOME
使用IRONPDF

如何使用C#將圖像轉換為PDF【程式碼範例教程】

Curtis Chau
Curtis Chau
Updated: 2026年7月19日

從PDF文件中提取結構化表格資料是C#開發人員的常見需求,這對於資料分析、報告或整合資訊到其他系統中至關重要。 然而,PDF主要設計為一致的視覺呈現,而非直接的資料提取。 這可能使以C#程式化地從PDF文件中讀取表格成為一項具有挑戰性的任務,特別是表格的形式可以差異很大——從簡單的文字基地的網格到具有合併單元格的複雜佈局,甚至是嵌入在掃描文件中的圖像表格。

本指南提供了一個全面的C#教程,說明如何使用IronPDF進行PDF表格提取。 我們將主要探索利用IronPDF強大的文字提取能力來存取然後解析來自基於文字的PDF的表格資料。 我們將討論此方法的有效性,提供解析策略,並對處理提取的資訊提供見解。 此外,我們還將觸及更複雜情境(如掃描PDF)的處理策略。


從PDF中提取表格資料到C#的關鍵步驟

  1. 安裝IronPDF C#程式庫(https://nuget.org/packages/IronPdf/)以進行PDF處理。
  2. (選擇性展示步驟)使用IronPDF的RenderHtmlAsPdf從HTML字串建立一個帶有表格的範例PDF。 (見部分:(展示步驟)建立一個具有表格資料的PDF文件)
  3. 載入任何PDF文件並使用ExtractAllText方法檢索其原始文字內容。 (See section: Extract All Text Containing Table Data from the PDF)
  4. 實施C#邏輯以解析提取的文字並識別表格行和單元格。 (See section: Parsing Extracted Text to Reconstruct Table Data in C#)
  5. 輸出結構化的表格資料或將其保存為CSV文件以便進一步使用。 (See section: Parsing Extracted Text to Reconstruct Table Data in C#)
  6. 考慮高級技術,例如處理掃描PDF的OCR(稍後討論)。

IronPDF - C# PDF程式庫

IronPDF是針對.NET中的PDF操作的C# .NET程式庫解決方案(https://ironpdf.com/),它幫助開發者在其軟體應用中輕鬆閱讀、建立和編輯PDF文件。 其強大的Chromium引擎能夠從HTML高精確度和快速地呈現PDF文件。 它允許開發者無縫地將不同格式轉換為PDF及相反過程。 它支持包括.NET 7、.NET 6、5、4、.NET Core和Standard在內的最新.NET框架。

此外,IronPDF .NET API還能讓開發者操作和編輯PDF,新增頁眉和頁腳,重要的是,輕鬆提取文字、圖像以及(如我們將看到的)從PDF中提取表格資料。

一些重要功能包括:

在C#中使用IronPDF程式庫提取表格資料的步驟

為了從PDF文件中提取表格資料,我們將設置一個C#專案:

  1. **Visual Studio:**確保您已安裝Visual Studio(例如,2022)。 如果沒有,請從Visual Studio網站下載(https://visualstudio.microsoft.com/downloads/)。

  2. 建立專案:

    • 打開Visual Studio 2022並點擊建立新專案。

      如何在C#中閱讀PDF表格,圖1:Visual Studio的開始介面 Visual Studio的開始介面

    • 選擇"控制台應用"(或您偏好的C#專案型別)並點擊下一步。

      如何在C#中閱讀PDF表格,圖2:在Visual Studio中建立新的控制台應用程式 在Visual Studio中建立新的控制台應用程式

    • 為您的專案命名(例如,"ReadPDFTableDemo")並點擊下一步。 如何在C#中閱讀PDF表格,圖3:配置新建立的應用程式 配置新建立的應用程式

    • 選擇您需要的.NET Framework(例如,.NET 6或更高版本)。 如何在C#中閱讀PDF表格,圖4:選擇.NET Framework 選擇.NET Framework

    • 點擊建立。 將會建立控制台專案。

  3. 安裝IronPDF:

    • 使用Visual Studio NuGet包管理器:

      • 在Solution Explorer中右鍵點擊您的專案並選擇"管理NuGet軟體包..."

        如何在C#中閱讀PDF表格,圖5:工具及管理NuGet軟體包 工具及管理NuGet軟體包

      • 在NuGet包管理器中,搜索"IronPDF"並點擊"安裝"。 如何在C#中閱讀PDF表格,圖6:工具及管理NuGet軟體包 工具及管理NuGet軟體包

    • **直接下載NuGet包:**存取IronPDF的NuGet包頁面(https://www.nuget.org/packages/IronPdf/)。

    • **下載IronPDF .DLL程式庫:**從官方IronPDF網站下載並在您的專案中引用該DLL。

(展示步驟)建立一個具有表格資料的PDF文件

在本教程中,我們將首先從HTML字串建立一個包含簡單表格的範例PDF。 這為我們提供了一個已知的PDF結構來示範提取過程。 在實際情境中,您會載入您已有的PDF文件。

新增IronPDF命名空間並選擇性地設置您的授權金鑰(IronPDF對於開發是免費的,但商業部署需要授權以去除浮水印):

using IronPdf;
using System;       // For StringSplitOptions, Console
using System.IO;    // For StreamWriter

// Apply your license key if you have one. Otherwise, IronPDF runs in trial mode.
// License.LicenseKey = "YOUR-TRIAL/PURCHASED-LICENSE-KEY";

這是我們範例表格的HTML字串:

string HTML = "<html>" +
        "<style>" +
            "table, th, td {" +
                "border:1px solid black;" +
            "}" +
        "</style>" +
        "<body>" +
            "<h1>A Simple table example</h1>" + // Corrected typo: h1 not h2
            "<table>" +
                "<tr>" +
                    "<th>Company</th>" +
                    "<th>Contact</th>" +
                    "<th>Country</th>" +
               "</tr>" +
                "<tr>" +
                    "<td>Alfreds Futterkiste</td>" +
                    "<td>Maria Anders</td>" +
                    "<td>Germany</td>" +
                "</tr>" +
                "<tr>" +
                    "<td>Centro comercial Moctezuma</td>" +
                    "<td>Francisco Chang</td>" +
                    "<td>Mexico</td>" +
                "</tr>" +
            "</table>" +
            "<p>To understand the example better, we have added borders to the table.</p>" +
        "</body>" +
        "</html>";
HTML

現在,使用ChromePdfRenderer從此HTML建立PDF:

var renderer = new ChromePdfRenderer();
PdfDocument pdfDocument = renderer.RenderHtmlAsPdf(HTML);
pdfDocument.SaveAs("table_example.pdf");
Console.WriteLine("Sample PDF 'table_example.pdf' created.");

SaveAs方法會保存PDF。 生成的table_example.pdf看起來像這樣(基於HTML的概念圖):

如何在C#中閱讀PDF表格,圖7:在NuGet包管理器UI中搜索IronPDF 在NuGet套件管理器UI中搜索IronPDF

提取包含表格資料的所有文字從PDF中

要提取表格資料,我們首先載入PDF(無論是剛建立的還是已有的PDF),然後使用ExtractAllText方法。 此方法可取回所有PDF頁面中的文字內容。

// Load the PDF (if you just created it, it's already loaded in pdfDocument)
// If loading an existing PDF:
// PdfDocument pdfDocument = PdfDocument.FromFile("table_example.pdf"); 
// Or use the one created above:
string allText = pdfDocument.ExtractAllText();

allText變數現在持有從PDF中取出的整個文字內容。 您可以顯示它以查看原始提取:

Console.WriteLine("\n--- Raw Extracted Text ---");
Console.WriteLine(allText);

如何在C#中閱讀PDF表格,圖8:要提取文字的PDF文件 要提取文字的PDF文件

解析提取的文字以重構C#中的表格資料

有了提取的原始文字,接下來的挑戰是解析此字串以識別並結構化表格資料。 這一步驟非常依賴於您PDF中表格的格式和一致性。

一般解析策略:

  1. **識別行分隔符:**換行符(\r\n)是常見的行分隔符。
  2. **識別列分隔符:**行中的單元可能由多個空格、製表符或特定已知字元分隔(如"|'或';')。 有時,如果列是視覺上對齊而缺乏清晰的文字分隔符,您可能基於一致的空格模式推斷結構,儘管這更為複雜。
  3. 過濾非表格內容:ExtractAllText方法取得了所有的文字。 您需要邏輯去分離實際構成表格的文字,可以通過尋找標題關鍵字或跳過前導/後導文字實現。

C#的String.Split方法是一個基本的工具來達成此目的。 這裡有個例子,嘗試將我們的樣本僅抽取表格行,過濾掉含有句號的行(對此特定例子的簡單啟發式方法):

Console.WriteLine("\n--- Parsed Table Data (Simple Heuristic) ---");
string[] textLines = allText.Split(new[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);
foreach (string line in textLines)
{
    // Simple filter: skip lines with a period, assuming they are not table data in this example
    // and skip lines that are too short or headers if identifiable
    if (line.Contains(".") || line.Contains("A Simple table example") || line.Length < 5) 
    {
        continue;
    }
    else
    {
        // Further split line into cells based on expected delimiters (e.g., multiple spaces)
        // This part requires careful adaptation to your PDF's table structure
        // Example: string[] cells = line.Split(new[] { "  ", "\t" }, StringSplitOptions.None);
        Console.WriteLine(line); // For now, just print the filtered line
    }
}

此程式碼將文字分成行。 if條件是針對這個特定例子的非表格文字的非常基本的過濾器。 在實際世界的情境中,您需要更強健的邏輯來準確識別和解析表格行和單元格。

簡單過濾文字的輸出:

如何在C#中讀取PDF表格,圖9:主控台顯示提取的文字 主控台顯示提取的文字

關於文字解析方法的重要考慮:

  • **最適合:**文字基地的PDF,具有簡單、一致的表格結構和明確的文字分隔符。
  • **限制:**此方法可能在以下情況中苦難:
    • 具有合併單元格或複雜巢狀結構的表格。
    • 列是由視覺間隔而非文字分隔定義的表格。
    • 嵌入為圖像的表格(需要OCR)。
    • 不同的PDF生成導致不一致的文字抽取順序。

您可將過濾後的行(通常代表表格行)保存到CSV文件中。

using (StreamWriter file = new StreamWriter("parsed_table_data.csv", false))
{
    file.WriteLine("Company,Contact,Country"); // Write CSV Header
    foreach (string line in textLines)
    {
        if (line.Contains(".") || line.Contains("A Simple table example") || line.Length < 5)
        {
            continue;
        }
        else
        {
            // For a real CSV, you'd split 'line' into cells and join with commas
            // E.g., string[] cells = line.Split(new[] {"  "}, StringSplitOptions.RemoveEmptyEntries);
            // string csvLine = string.Join(",", cells);
            // file.WriteLine(csvLine);
            file.WriteLine(line.Replace("  ", ",").Trim()); // Basic replacement for this example
        }
    }
}
Console.WriteLine("\nFiltered table data saved to parsed_table_data.csv");

在C#中對更複雜PDF表格提取的策略

從複雜或圖像基礎的PDF表格中提取資料通常需要比簡單的文字解析更高階的技術。 IronPDF提供的功能可幫助您:

  • **使用IronOCR功能處理掃描表格:**若表格處在影像中(例如,掃描的PDFs),單靠ExtractAllText()無法取得它們。 IronOCR的文字檢測功能可以首先將這些圖像轉換為文字。
// Conceptual OCR usage (refer to IronOCR's documentation for detailed implementation)
// Install Package IronOcr
using IronOcr;
using (var ocrInput = new OcrInput("scanned_pdf_with_table.pdf"))
{
     ocrInput.TargetDPI = 300; // Good DPI for OCR accuracy
     var ocrResult = new IronOcr().Read(ocrInput);
     string ocrExtractedText = ocrResult.Text;
     // Now, apply parsing logic to 'ocrExtractedText'
     Console.WriteLine("\n--- OCR Extracted Text for Table Parsing ---");
     Console.WriteLine(ocrExtractedText);
}

有關詳細的指導,請存取IronOCR文件(https://ironsoftware.com/csharp/ocr/)。 進行OCR之後,您可以解析產生的文字字串。

  • **基於座標的文字提取(進階):**雖然IronPDF的ExtractAllText()供應了文字流,但某些情況下獲取每個文字段的x,y位置可能更具優勢。 如果IronPDF提供API以獲得文字及其邊界框資訊(請參閱當前文件),可以基於視覺對齊進行更複雜的空間解析以重構表格。

  • **PDF轉換為其他格式:**IronPDF能將PDF轉為結構化格式如HTML。 通常,解析HTML表格比原始PDF文字更為簡單。

PdfDocument pdfToConvert = PdfDocument.FromFile("your_document.pdf");
string htmlOutput = pdfToConvert.ToHtmlString();
// Then use an HTML parsing library (e.g., HtmlAgilityPack) to extract tables from htmlOutput.
  • **模式識別與正則表達式:**對於具有非常可預測模式但分隔符不一致的表格,應用於提取文字的複雜正則表達式有時能分離出表格資料。

選擇正確的策略取決於您的原始PDF的複雜性和一致性。 對於許多常見商務文件上的文字基地表格,IronPDF的ExtractAllText與智能C#解析邏輯結合是非常有效的。而對於基於圖像的表格而言,其OCR功能是必不可少的。

總結

本文展示了如何使用IronPDF在C#中從PDF文件提取表格資料,主要關注於利用ExtractAllText()方法和後續的字串解析。 我們了解到,儘管此方法對基於文字的表格非常強大,但像圖片基礎的表格一樣的更為複雜的情況,可以使用IronPDF的OCR功能或先將PDF轉換為其他格式來解決。

IronPDF為.NET開發人員提供了一個多功能的工具包,簡化了許多PDF相關任務,從建立和編輯到全面的資料提取。 它提供了ExtractTextFromPage等方法來進行頁面指定的提取,並支持從格式如markdown或DOCX轉換為PDF。

IronPDF在開發中是免費的,並提供了免費試用授權以測試其全部商業功能。 對於生產部署,提供了多種授權選項。

更多詳情和高級使用例探索官方IronPDF文件和例子(https://ironpdf.com/)

Curtis Chau
技術作家

Curtis Chau擁有Carleton大學的電腦科學學士學位,專精於前端開發,擁有Node.js、TypeScript、JavaScript和React的專業知識。Curtis熱衷於建立直觀且美觀的使用者介面,喜愛使用現代框架並建立結構良好、視覺吸引力的手冊。

...
閱讀更多

相關文章

Key in blue circle

立即免費取得 30 天試用金鑰。

Your trial license will be sent to your email address

無任何限制。100% 解鎖。無需信用卡。

OR
bullet_checked無需信用卡或建立帳號無任何限制。100% 解鎖。無需信用卡。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried Iron Suite
預訂您的免費現場演示
Booking Badge

受到全球數百萬工程師的信任

Iron Software的客戶標誌
獲取您的無義務諮詢
填寫以下表格或電子郵件sales@ironsoftware.com
您的詳細資訊將始終保密。
受到全球數百萬工程師的信任
Iron Software的客戶標誌
立即獲取您的30天試用金鑰。
無需信用卡或帳戶建立
C# 用於PDF的NuGet程式庫
使用NuGet安裝

版本: 2026.9

PM > Install-Package IronPdf
nuget.org/packages/IronPdf/
  1. 在解決方案資源管理器,右鍵點選參考,管理NuGet包
  2. 選擇瀏覽並搜尋"IronPdf"
  3. 選擇套件並安裝
C# PDF DLL
下載DLL

版本: 2026.9

或者點擊此處下載Windows安裝程式。

  1. 下載並解壓IronPDF到類似~/Libs的位置,位於您的解決方案目錄中
  2. 在Visual Studio解決方案資源管理器,右鍵點選參考。選擇瀏覽,"IronPdf.dll"

授權從$999起