IRONSOFTWAREHOME
使用IRONPDF

適用於.NET Core的PDF API:在C#中生成和編輯PDF

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

直接在網頁瀏覽器中顯示PDF文件是現代ASP.NET Core應用程式中的一個常見需求。 無論您是在生成發票、報告還是合同,使用者都希望在不下載文件或安裝第三方插件(如Adobe Acrobat Reader)的情況下獲得流暢的PDF查看體驗。 IronPDF通過提供基於Chrome的渲染引擎進行伺服器端PDF生成和串流來使這一過程變得簡單化——無需外部查看器依賴。

本教程將逐步指導您如何在ASP.NET Core中使用IronPDF顯示、儲存和列印PDF文件。 您還將學習程式庫如何處理容器和雲端部署,使其成為生產DevOps管道的可靠選擇。

IronPDF C# PDF程式庫宣傳橫幅,突顯HTML到PDF的轉換、編輯工具、部署靈活性和免費試用優惠

瀏覽器如何內嵌顯示PDF文件?

現代瀏覽器包括內建的PDF查看器,當收到具有application/pdfMIME型別的回應時啟動。 當您的ASP.NET Core控制器返回具有正確Content-Type標頭的PDF時,瀏覽器會自動內嵌渲染它——無需安裝插件。 根據MDN Web Docs,正確的MIME型別配置對於控制瀏覽器處理文件回應方式至關重要。

IronPDF使用其ChromePdfRenderer類在伺服器端生成PDF,其內嵌完整的Chromium引擎。這意味著文件的渲染支持完整的CSS、JavaScript、網頁字體和數位簽名支持——這與Google Chrome的渲染管道相同。 結果是像素精確的輸出,瀏覽器無需任何客戶端查看程式庫即可內嵌顯示。

對於容器化環境,這種架構特別有價值。 渲染器完全在進程內運行,不生產外部無頭瀏覽器進程或依賴於遠端服務。 資源清理自動進行,防止ASP.NET Core服務中的長時間記憶體洩漏。 您可以查看IronPDF的完整功能集以了解提供的完整渲染能力。

四列功能網格顯示PDF軟體功能:生成PDF、轉換PDF、編輯PDF以及簽名和保護PDF,每個類別下有詳細的功能列表

為什麼伺服器端渲染產生一致的結果?

伺服器端渲染消除了PDF生成過程中的瀏覽器變異性。 當PDF在使用者端生成時,輸出質量取決於終端使用者的瀏覽器版本、操作系統和已安裝字體。 使用IronPDF時,無論是Windows、Linux還是Docker容器,每台伺服器上運行的都是相同的Chromium引擎,保證了合規文件、發票和簽名合同的一致輸出。

Chrome引擎相對於簡單的HTML到PDF轉換器提供了什麼?

簡單的HTML到PDF轉換器通常跳過JavaScript執行,忽略CSS媒體查詢,或者產生劣質的排版。 IronPDF的Chrome引擎等待JavaScript完成,遵循@media print樣式,處理SVG圖形,並支援國際內容的UTF-8字元編碼。 這種精確度在顯示使用者也會列印或存檔的文件時非常重要。

如何在ASP.NET Core專案中安裝IronPDF?

建立新的ASP.NET Core專案僅需一個命令。 打開終端並運行:

dotnet new mvc -n PdfViewerApp
cd PdfViewerApp
SHELL

接下來,安裝IronPDF NuGet套件。 您可以使用Package Manager Console或.NET CLI:

PM > Install-Package IronPdf

這將安裝所需的一切——Chrome引擎、PDF處理程式庫以及所有特定於平臺的依賴項。 IronPDF支持.NET 6、7、8、9和10,無需其他框架配置。 IronPDF文件涵蓋了包括slim套件的進階安裝選項,適用於如AWS Lambda等空間受限的部署。

Visual Studio Package Manager Console顯示IronPDF NuGet套件的安裝進度,顯示多個依賴包的下載包括Iron Software組件、gRPC和System.Threading.Channels

您應選擇哪個套件變體?

對於標準部署,使用IronPdf。 對於如AWS Lambda或Edge Functions等具有嚴格尺寸限制的環境,IronPdf.Slim套件減少了最初的下載體積。 兩種變體都暴露相同的API,因此在進行切換時不需要程式碼更改。

在容器環境中常見的安裝問題有哪些?

Linux容器有時需要額外的系統程式庫來進行圖形操作。 一個最小化的Dockerfile設置包括:

apt-get update && apt-get install -y libgdiplus libc6-dev libx11-dev
SHELL

Windows容器通常可以正常運行而不需要額外的依賴項。 若需故障排除,啟用IronPDF的內建日誌功能以在渲染錯誤顯示為HTTP 500回應之前捕獲它們。

如何在瀏覽器中內嵌顯示PDF?

返回PDF以供內嵌瀏覽需要三件事:生成PDF,設置File()結果中省略文件名參數。 這是一個完整的控制器操作:

using IronPdf;
using Microsoft.AspNetCore.Mvc;

var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllersWithViews();
var app = builder.Build();
app.MapControllerRoute(name: "default", pattern: "{controller=Home}/{action=Index}/{id?}");
app.Run();

// PdfController.cs
public class PdfController : Controller
{
    public IActionResult ViewPdf()
    {
        var renderer = new ChromePdfRenderer();
        renderer.RenderingOptions.PrintHtmlBackgrounds = true;
        renderer.RenderingOptions.CreatePdfFormsFromHtml = true;
        renderer.RenderingOptions.EnableJavaScript = true;
        renderer.RenderingOptions.RenderDelay = 100;

        var html = @"
            <html>
            <head>
                <style>
                    body { font-family: Arial, sans-serif; padding: 20px; }
                    h1 { color: #2c3e50; }
                    .content { line-height: 1.6; }
                </style>
            </head>
            <body>
                <h1>Invoice #12345</h1>
                <div class='content'>
                    <p>Date: " + DateTime.Now.ToString("yyyy-MM-dd") + @"</p>
                    <p>Thank you for your business!</p>
                </div>
            </body>
            </html>";

        var pdf = renderer.RenderHtmlAsPdf(html);

        // Omitting the filename tells the browser to display inline
        return File(pdf.BinaryData, "application/pdf");
    }
}

關鍵是Content-Disposition: inline,觸發瀏覽器的內建PDF查看器。 新增文件名則切換到Content-Disposition: attachment,這會觸發下載。 如需更多HTML轉換模式,請參見HTML字串到PDF指南

對於高流量應用程式,請使用異步渲染方法以避免阻塞執行緒:

public async Task<IActionResult> ViewPdfAsync()
{
    var renderer = new ChromePdfRenderer();
    renderer.RenderingOptions.Timeout = 60;

    var html = await GetHtmlContentAsync();
    var pdf = await renderer.RenderHtmlAsPdfAsync(html);

    return File(pdf.BinaryData, "application/pdf");
}

在基於網路的PDF查看器中查看的基本PDF發票範例,具有標準導航控制項

何時應使用異步PDF生成?

對於任何接收並發請求的端點,異步生成非常重要。 同步生成會阻塞ASP.NET Core執行緒池的執行緒,減少應用程式可以處理的同時請求數量。 及早切換到異步方法——API表面相同,因此遷移很簡單。

還可以渲染哪些HTML來源?

除了HTML字串外,IronPDF還可以從URL、本地硬盤上的HTML文件和Razor視圖渲染。 調用renderer.RenderHtmlFileAsPdf("wwwroot/templates/invoice.html")從本地文件系統讀取。 這種靈活性意味著您可以重用現有的Razor模板作為PDF模板,而不需要維護單獨的HTML文件。 IronPDF的NuGet Gallery列表顯示當前的套件版本和發布說明。

如何在ASP.NET Core中啟用PDF文件下載?

觸發文件下載而不是內嵌顯示只需更改一個參數。 向attachment

public IActionResult DownloadPdf()
{
    var renderer = new ChromePdfRenderer();
    renderer.RenderingOptions.ImageQuality = 85;

    var html = @"<h1>Quarterly Report</h1>
                 <p>Revenue this quarter exceeded projections by 12%.</p>";
    var pdf = renderer.RenderHtmlAsPdf(html, @"wwwroot/images");

    // Compress images to reduce download size
    pdf.CompressImages(30);

    // The filename parameter triggers download instead of inline view
    return File(pdf.BinaryData, "application/pdf", "quarterly-report-2026.pdf");
}

對於供許多使用者使用的大型文件,串流減少了高峰記憶體消耗:

public IActionResult StreamPdf()
{
    var renderer = new ChromePdfRenderer();
    var html = "<h1>Large Report</h1><p>Content spanning many pages.</p>";
    var pdf = renderer.RenderHtmlAsPdf(html);

    var stream = pdf.Stream;
    stream.Position = 0;

    // Stream directly without buffering the full byte array
    return File(stream, "application/pdf", "report.pdf");
}

串流可逐漸發送PDF資料,這大大減少了在服務大型文件給並發使用者時的高峰記憶體使用量。 有關其他導出模式,請參閱合併和拆分PDFs指南從PDF提取文字和圖片

使用IronPDF for .NET生成的PDF文件範例,顯示在標準PDF查看器介面中

對於不同的文件型別,哪種壓縮設定最佳?

文字較多的PDF在70-80%圖像質量下壓縮良好,視覺影響最小。 圖像豐富的文件(如行銷手冊)需要85-95%的質量以保護清晰度。 含有圖表的財務報告應保持在85%以上以維持圖形的可讀性。 在部署到生產環境之前,請針對代表性的文件測試壓縮級別。

如何在ASP.NET Core中生成可列印的PDF?

可列印的PDF需要特定的頁面配置:列印CSS媒體型別、定義的邊距和明確的紙張尺寸。IronPDF通過RenderingOptions提供了這些功能:

public IActionResult PrintablePdf()
{
    var renderer = new ChromePdfRenderer();
    renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;
    renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Portrait;
    renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
    renderer.RenderingOptions.MarginTop = 25;
    renderer.RenderingOptions.MarginBottom = 25;
    renderer.RenderingOptions.MarginLeft = 25;
    renderer.RenderingOptions.MarginRight = 25;

    // Add headers and footers for professional print output
    renderer.RenderingOptions.TextHeader = new TextHeaderFooter
    {
        CenterText = "Confidential Document",
        DrawDividerLine = true
    };
    renderer.RenderingOptions.TextFooter = new TextHeaderFooter
    {
        CenterText = "Page {page} of {total-pages}",
        FontSize = 10
    };

    var html = @"
        <style>
            @media print {
                .no-print { display: none; }
                .page-break { page-break-after: always; }
            }
        </style>
        <h1>Print-Ready Document</h1>
        <p>This document is formatted for A4 printing with standard margins.</p>
        <div class='page-break'></div>
        <h2>Page 2</h2>
        <p>Content continues on the second page.</p>";

    var pdf = renderer.RenderHtmlAsPdf(html);
    return File(pdf.BinaryData, "application/pdf");
}

設置@media printCSS規則進行渲染前設置。 這隱藏了導航欄、側邊欄和其他僅限於螢幕的元素。 然後,使用者可以使用標準的鍵盤快捷鍵從瀏覽器的內建查看器列印PDF,完全控制列印機選擇和副本數量。 有關進階標頭和頁腳模式,請參見標頭和頁腳指南

您也可以在列印的文件中新增水印,在交付前數位簽名,或用密碼和權限設定來保護它們。 這些功能可以直接通過PdfDocumentAPI整合而不需要單獨的處理步驟。

顯示在標準PDF查看器中的可列印PDF文件範例,顯示列印輸出的典型格式化

哪種頁面配置可以確保跨列印機的相容性?

標準A4或信紙尺寸與20-25毫米的邊距可以在所有列印機型號中可靠工作。 除非部署目標是一個已知的列印機機隊,否則避免使用自定紙張尺寸。 使用CSS page-break-beforepage-break-after屬性而不是專有的分頁方法。 W3C CSS分頁媒體規範詳細定義了這些屬性。 這些標準的CSS屬性在Chrome渲染引擎和實體列印機中都能一致工作。

如何將ASP.NET Core PDF查看器部署到Docker?

IronPDF在Linux和Windows容器上運行而無需程式碼更改。 下面Dockerfile中使用的基礎映像來自微軟的官方.NET容器映像,並且定期進行安全修補。 下面的Docker配置安裝所需的系統程式庫並產生一個最小化的映像。

FROM mcr.microsoft.com/dotnet/aspnet:10.0 AS base
WORKDIR /app

RUN apt-get update && apt-get install -y \
    libgdiplus \
    libc6-dev \
    libx11-dev \
    && rm -rf /var/lib/apt/lists/*

FROM mcr.microsoft.com/dotnet/sdk:10.0 AS build
WORKDIR /src
COPY ["PdfViewerApp.csproj", "./"]
RUN dotnet restore "PdfViewerApp.csproj"
COPY . .
RUN dotnet build "PdfViewerApp.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "PdfViewerApp.csproj" -c Release -o /app/publish

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "PdfViewerApp.dll"]
Text

對於Kubernetes部署,新增一個健康檢查端點以對終端到終端的PDF生成進行驗證:

builder.Services.AddHealthChecks()
    .AddCheck("pdf_generation", () =>
    {
        try
        {
            var renderer = new ChromePdfRenderer();
            var pdf = renderer.RenderHtmlAsPdf("<p>Health check</p>");
            return pdf.PageCount > 0
                ? HealthCheckResult.Healthy()
                : HealthCheckResult.Unhealthy("PDF generation returned empty document");
        }
        catch (Exception ex)
        {
            return HealthCheckResult.Unhealthy(ex.Message);
        }
    });

此健康檢查允許Kubernetes在使用者碰到錯誤前檢測並替換不健康的pod。 它還可以與標準的ASP.NET Core健康監控中介軟體整合。 IronPDF試用授權包含完整功能以便於Docker測試而無限制。

進程內渲染器有哪些部署優勢?

下表比較了IronPDF的進程內渲染方法與常用的無頭瀏覽器伺服器設置。

ASP.NET Core的PDF生成方法比較
因素IronPDF(進程內)無頭瀏覽器伺服器
部署複雜性僅NuGet包單獨的過程或服務
網路延遲無(進程內)每個請求的HTTP回路
容器佔用空間單一容器至少兩個容器
健康監測標準ASP.NET Core中介軟體單獨服務健康檢查
渲染一致性Chrome引擎,鎖定版本瀏覽器版本各異

如何向查看器新增高級PDF功能?

IronPDF不僅限於基本查看和下載功能。 同一程式庫可以將HTML渲染為PDF,還提供PDF表單處理自定義水印數位簽名PDF到圖像轉換——而不需要額外的套件。

對於文件管理工作流程,您可以將上傳的文件轉換為PDF,提取文字進行索引,註釋文件,並將它們交付回使用者——這一切都在單一的ASP.NET Core控制器中完成。 IronPDF功能頁面提供了完整的功能概述,包括每個功能領域的程式碼範例。

值得注意的查看應用程式的關鍵功能有:

  • 文字提取——為搜索或合規存檔索引PDF內容
  • 合併和拆分——組合多個文件或提取特定的頁面
  • 水印——在展示前用保密通知或品牌標記文件
  • 數位簽名——在串流到瀏覽器前簽名生成的PDF
  • 標頭和頁尾——新增頁碼、文件標題和分隔線

如何處理PDF安全和存取控制?

對於顯示敏感文件的應用程式,將IronPDF的密碼和權限功能與ASP.NET Core的授權中介軟體結合使用。 設定控制器行動以要求身份驗證,然後串流出PDF——文件從未觸及文件系統或未經身份驗證的端點。

對於操作軌跡要求,在串流前數位簽名PDF。 簽名記錄簽名時間戳並驗証文件的完整性,這對於通過瀏覽器查看器顯示的財務和法律文件相當重要。

有哪些授權選項?

IronPDF授權從包括完整功能的免費試用開始——適合於Docker和Kubernetes環境中的開發、測試和概念驗證工作。 生產授權涵蓋從單一開發者到無限制伺服器部署的多種部署場景。

IronPDF文件提供了詳細的API參考、.NET版本升級的遷移指南以及針對Windows、Linux、macOS、AWS和Azure的平臺特定設置說明。

IronPDF offers flexible licensing options starting at $999 for single developers up to $3,999 for unlimited usage, with significant discounts currently available

在ASP.NET Core中內嵌PDF查看器僅需幾分鐘即可完成,使用IronPDF。 基於Chrome的渲染引擎處理HTML到PDF轉換的複雜性,ASP.NET Core的File()結果處理內嵌與下載行為,並且同一套件涵蓋列印、水印、數位簽名和容器部署。 從免費試用開始,並隨著需求的增長新增高級文件功能。

Curtis Chau
Technical Writer

Curtis Chau holds a Bachelor’s degree in Computer Science (Carleton University) and specializes in front-end development with expertise in Node.js, TypeScript, JavaScript, and React. Passionate about crafting intuitive and aesthetically pleasing user interfaces, Curtis enjoys working with modern frameworks and creating well-structured, visually appealing manuals.

...
Read More

Related Articles

Key in blue circle

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

bullet_checked無需信用卡或建立帳號
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
預訂您的免費現場演示
Booking Badge related to IronPDF Product Demo

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

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