IRONSOFTWAREHOME
使用IRONPDF

如何使用IronPDF構建ASP.NET Core PDF檢視器

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

IronPDF簡化在ASP.NET Core中提取PDF資料,通過提供方法來閱讀文字、表單資料和表格,使用簡單的C#程式碼,無需複雜的依賴或手動解析。

在.NET應用程式中處理PDF檔案可能比最初看起來更具挑戰性。 您可能需要從上傳的發票中提取文字、從調查中檢索表單資料或解析表格以用於您的資料庫。 許多專案因為開發者使用過於複雜的程式庫,這些程式庫需要大量的自訂解析程式碼而變慢。 IronPDF提供了簡單的替代方案,讓您以最少的設置讀取和處理PDF文件。

無論您是在處理簡單的文字、互動式表單欄位,還是結構化的表格資料,IronPDF的API讓您可以直接存取PDF內容,無需低層級解析。 本指南介紹如何在ASP.NET Core中讀取PDF檔案中的資料,涵蓋了文字提取、表單資料檢索、表格解析和非同步檔案上傳處理——所有這些都使用您可以嵌入到專案中的C#程式碼。

您如何在ASP.NET Core專案中設置IronPDF?

開始是很簡單的。 從NuGet套件管理控制台.NET CLI安裝IronPDF NuGet套件,使用以下命令之一:

PM > Install-Package IronPdf

安裝套件後,在所有處理PDF文件的檔案頂部新增IronPDF命名空間:

using IronPdf;

這就是大多數專案所需的所有設置。 IronPDF不依賴於外部呈現過程或在Windows上需要的額外本機依賴。 對於Linux或Docker環境,請參閱IronPDF文件以獲得平台特定的指導。

免費試用授權允許您在投入生產使用前測試完整的功能集。 您可以直接從IronPDF網站獲取試用授權並在首次PDF操作之前通過一行程式碼應用它。

您如何從PDF檔案中提取文字?

文字提取是最常見的PDF閱讀任務。 IronPDF提供ExtractTextFromPage以便頁面級存取。 這兩種方法保留閱讀順序並處理標準文字編碼。

// Load a PDF document from disk
var pdf = PdfDocument.FromFile("document.pdf");

// Extract all text from every page
string allText = pdf.ExtractAllText();

// Extract text from a specific page (zero-based index)
string pageOneText = pdf.ExtractTextFromPage(0);

Console.WriteLine(allText);

ExtractAllText返回完整的文字內容作為單個字串,保留換行符。 ExtractTextFromPage針對使用從零開始的索引的單個頁面,這在您只需要從多頁文件的特定部分獲取內容時很有用。

有關文字和圖像提取選項的深入介紹,從PDF提取文字指南涵蓋了包括基於區域的提取在內的高級情境。

您如何將文字提取整合到ASP.NET Core控制器中?

以下控制器動作接受通過MemoryStream中,並返回提取的文字作為JSON:

using IronPdf;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using System.IO;

[ApiController]
[Route("api/[controller]")]
public class PdfController : ControllerBase
{
    [HttpPost("extract-text")]
    public IActionResult ExtractText(IFormFile pdfFile)
    {
        if (pdfFile == null || pdfFile.Length == 0)
            return BadRequest("No PDF file uploaded.");

        using var stream = new MemoryStream();
        pdfFile.CopyTo(stream);

        var pdf = new PdfDocument(stream.ToArray());
        string extractedText = pdf.ExtractAllText();

        return Ok(new { text = extractedText });
    }
}

此端點將上傳的檔案轉換為位元組陣列並直接傳遞給PdfDocument。 不會將臨時文件寫入硬碟,這保持程式碼的乾淨,並避免不必要的儲存開銷。 IFormFile介面自然地與多部分表單提交和API客戶端(例如Postman)搭配使用。

您如何在ASP.NET Core中讀取PDF表單資料?

PDF表單—也稱為AcroForms—包含使用者填寫的互動式欄位。 IronPDF通過PdfDocument,讓您獲取文件中每一欄位的名稱和值。

以下端點讀取上傳的表單PDF並返回所有欄位值作為JSON字典:

[HttpPost("extract-form")]
public IActionResult ExtractForm([FromForm] IFormFile pdfFile)
{
    if (pdfFile == null || pdfFile.Length == 0)
        return BadRequest("No PDF file uploaded.");

    using var stream = new MemoryStream();
    pdfFile.CopyTo(stream);

    var pdf = new PdfDocument(stream.ToArray());
    var formData = new Dictionary<string, string>();

    if (pdf.Form != null)
    {
        foreach (var field in pdf.Form)
        {
            formData[field.Name] = field.Value;
        }
    }

    return Ok(new { formFields = formData });
}

Value屬性(使用者輸入的文字或選擇)。 文字框、勾選框、選項按鈕和下拉框皆出現在此集合中。

JSON回應使其容易將表單提交轉發到資料庫、第三方API或消息隊列,無需任何額外的解析。 對於涉及以編程方式建立或編輯PDF表單的工作流,PDF表單指南展示如何新增欄位並預填值。

典型的表單提取回應看起來如何?

API回應顯示從PDF表單中提取的JSON資料,具有名稱、電子郵件和地址欄位,顯示在Postman測試介面中,狀態為200 OK

上述回應顯示了一個200 OK的結果,包含樣本聯繫表單PDF中的欄位名稱和數值。 其結構是一個扁平的鍵值映射,這潔淨地映射到大多數資料庫模式或REST負載。

如何從PDF中提取表格資料?

PDF檔案中的表格作為定位文字儲存—PDF格式中沒有原生的表格資料結構。 因此,提取表格式資料意味著提取原始文字,然後應用解析邏輯以重建行和列。

IronPDF的ExtractAllText保留空白符和製表字元,這使得程式化地將行分割成列成為可能。 以下控制器動作演示了這種方法:

[HttpPost("extract-table")]
public IActionResult ExtractTable([FromForm] IFormFile pdfFile)
{
    if (pdfFile == null || pdfFile.Length == 0)
        return BadRequest("No PDF file uploaded.");

    using var memoryStream = new MemoryStream();
    pdfFile.CopyTo(memoryStream);

    var pdf = new PdfDocument(memoryStream.ToArray());
    string text = pdf.ExtractAllText();

    // Split into lines, then split each line into columns
    string[] lines = text.Split(
        new[] { '\r', '\n' },
        StringSplitOptions.RemoveEmptyEntries
    );

    var tableData = new List<string[]>();
    foreach (string line in lines)
    {
        string[] columns = line
            .Split('\t')
            .Where(c => !string.IsNullOrWhiteSpace(c))
            .ToArray();

        if (columns.Length > 0)
            tableData.Add(columns);
    }

    var table = tableData.Select(r => string.Join(" | ", r)).ToList();
    return Ok(new { Table = table });
}

此方法對於使用一致的以製表符分隔的列的PDF效果很好。 對於以可變空白分隔列的文件,您可能需要應用最小間隙啟發式或檢查字元位置。 合併或拆分PDF指南在您需要隔離包含表格的特定頁面然後進行提取時是有用的。

何時您應該手動解析表格?

API回應顯示從PDF中提取的結構化發票資料,包括客戶詳情、發票元資料和按項產品,並以JSON格式顯示定價

當PDF不是從HTML或結構化資料源生成時—例如,掃描的發票或在桌面出版工具中建立的文件,手動解析是正確的選擇。 製表符拆分方法能可靠地處理許多標準PDF。 當列邊界不規則時,您可以通過檢查IronPDF的DOM存取API中的原始字元座標來細化邏輯。

對於從HTML生成的文件,請考慮通過HTML中介回路。 從資料驅動的HTML模板生成您的PDF(HTML字串到PDF指南中涵蓋),意味著文字位置將是可預測的,並且提取將是直接的。

如何處理非同步PDF檔案上傳?

生產環境中的ASP.NET Core應用應非同步處理文件上傳,以避免阻塞執行緒池。 await結合,在控制器中保持非阻塞狀態:

[HttpPost("process-upload")]
public async Task<IActionResult> ProcessPdf([FromForm] IFormFile file)
{
    if (file == null || file.Length == 0)
        return BadRequest("No PDF file uploaded.");

    using var ms = new MemoryStream();
    await file.CopyToAsync(ms);

    var pdf = new PdfDocument(ms.ToArray());
    string text = pdf.ExtractAllText();
    int pageCount = pdf.PageCount;

    return Ok(new
    {
        text,
        pages = pageCount
    });
}

PdfDocument構造函式是同步的,但上傳步驟—通常是管線中最慢的部分—以非同步方式運行。 此模式在並發負載下能很好地擴展,並且與最小API端點、Razor Pages處理器和gRPC服務相容。

如何限制上傳的文件大小?

ASP.NET Core強制執行預設的請求主體大小限制為30 MB。 對於較大的PDF,請在Program.cs中增加限制:

builder.Services.Configure<FormOptions>(options =>
{
    options.MultipartBodyLengthLimit = 100 * 1024 * 1024; // 100 MB
});

Kestrel有其自己的限制,您可能也需要提高:

builder.WebHost.ConfigureKestrel(options =>
{
    options.Limits.MaxRequestBodySize = 100 * 1024 * 1024;
});

設置這些值應根據您的應用程式將處理的PDF合理的最大大小。 在將上傳的文件傳遞給IronPDF之前,始終驗證其MIME型別和副檔名,以防止意外輸入。

如何將提取的PDF內容轉換為其他格式?

一旦您擁有文字或表單資料,您可以將其傳輸到應用程式需要的任何下游過程中—資料庫寫入、搜尋索引、報告生成或API調用。 IronPDF還支持反向轉換:將HTML渲染為PDF。

如果您希望以視覺方式顯示提取的內容,您可以使用PDF到圖像轉換指南將原始PDF渲染為圖像。 這在您希望顯示頁面縮略圖而不在瀏覽器中載入完整PDF的情況下很有用。

如果您需要在將輸出文件交付給使用者之前保護它們,IronPDF支持數位簽名水印作爲後處理步驟。 新增頁眉和頁腳—在頁眉和頁腳指南中涵蓋—同樣簡單明瞭。

常見的PDF資料提取情境和建議的IronPDF方法
情境IronPDF方法/屬性說明
提取所有頁面文字pdf.ExtractAllText()以閱讀順序返回完整文件文字
從單頁提取文字pdf.ExtractTextFromPage(n)從零開始的頁面索引
讀取AcroForm欄位pdf.Form列舉field.Namefield.Value
解析表格行ExtractAllText() + 拆分邏輯根據製表符或空白間隙分割
計算頁數pdf.PageCount用於分頁和驗證
從位元組陣列載入new PdfDocument(bytes)不需要臨時文件
從文件路徑載入PdfDocument.FromFile(path)用於伺服器端文件存取

設置PDF資料提取後的下一步是什麼?

您已經有了用於文字提取、表單資料讀取、表格解析和非同步上傳的工作模型。 基於您的應用程式需求,這裡有一些接下來可以探索的方向。

如果您需要在提取工作流程中生成PDF報告,IronPDF功能概述涵蓋HTML到PDF渲染、附加覆蓋和頁面操作。 對於從多個來源合併報告的應用,合併或拆分PDF指南講解如何合併和拆分文件。

為了安全的文件傳遞,數位簽名允許您在將PDF發送給客戶之前進行認證。 自定義水印為生成的文件新增視覺品牌或草稿標籤。

如果您的專案需要從掃描的PDF(圖像而非可搜尋文字)中提取資料,則需要在呼叫ExtractAllText之前執行OCR步驟。 IronOCR來自Iron Software,整合了IronPDF以處理掃描的文件工作流程。

IronPDF在靈活的授權選項下可供個別開發者和團隊使用。 從免費試用開始,無限制地測試所有功能。 完整文件包含API參考、入門指南和Windows、Linux、Docker及雲端環境的部署說明。

在ASP.NET Core中從PDF檔案讀取資料不再需要低層級的解析程式碼或重型依賴。 使用IronPDF,從上傳的文件到提取內容的過程只是幾行程式碼,完美地融入到任何控制器或服務層。

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 IronPDF
預訂您的免費現場演示
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