跳過到頁腳內容
使用IRONPDF

如何使用 IronPDF 在 ASP .NET Web 應用程式中建立 PDF 檢視器

建立用於顯示PDF文件的網路應用程式很簡單。 無論您是展示發票、報告還是互動式表單,使用者都希望獲得流暢的瀏覽器內文件檢視體驗—無需 Adobe Acrobat Reader 或其他第三方工具。

IronPDF 讓這一切變得極為簡單。 這個經常更新的 .NET 程式庫可讓您使用幾行程式碼在 ASP.NET Core 專案中建立、渲染和顯示 PDF 檔案。 讓我們深入了解如何實現一個專業的 PDF 檢視器控件,它可以處理從簡單的 HTML 轉換到複雜的 Razor 視圖的一切操作。

基於瀏覽器的PDF檢視是如何運作的?

好消息是:現代瀏覽器已經內建了 PDF 檢視器。 當您的伺服器傳送的 PDF 檔案具有正確的 MIME 類型( application/pdf )時,瀏覽器會自動將其內嵌顯示。這意味著您無需外部插件或複雜的客戶端 JavaScript 程式庫即可查看 PDF 文件。

關鍵在於產生高品質的 PDF 文件並配置正確的回應標頭。 IronPDF 在伺服器端處理繁重的工作,使用其基於 Chrome 的渲染引擎,從 HTML、CSS 和 JavaScript 創建像素級完美的 PDF 頁面。 結果如何? 您的使用者將獲得原生文件檢視器體驗,具備文字選擇、搜尋、列印和下載等功能,而無需任何額外的 UI 配置。 您可以輕鬆地嵌入和顯示內容。

這種方法可以無縫地應用於所有 .NET 應用程序,無論您是使用 ASP.NET Core MVC、Razor 視圖構建,還是使用傳統的 Web 資料夾專案構建。

如何安裝和設定 PDF 檢視器控制項?

在 Visual Studio 中開始使用 IronPDF 只需幾個步驟。 開啟您的 ASP.NET Core 專案並安裝 NuGet 套件:

Install-Package IronPdf

接下來,在Program.cs中新增您的許可證金鑰配置:

IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
$vbLabelText   $csharpLabel

這就是將 IronPDF 完全整合到您的 .NET 應用程式中所需的所有設定。 有關 Azure 部署或 Docker 容器等進階場景的更多設定選項,請參閱IronPDF 的文件。 您可以先免費試用,在正式購買前體驗所有功能。

如何從 HTML 產生和顯示 PDF 文件?

在 ASP.NET Core Web 應用程式中建立 PDF 檢視器的最簡單方法是直接轉換 HTML 字串。 以下是一個完整的控制器範例:

using IronPdf;
using Microsoft.AspNetCore.Mvc;

public class PdfController : Controller
{
    public IActionResult DisplayFromHtml()
    {
        var renderer = new ChromePdfRenderer();
        // Create PDF from HTML with CSS styling
        var html = @"
            <html>
            <head>
                <style>
                    body { font-family: Arial; padding: 20px; }
                    h1 { color: #2c3e50; }
                    .content { line-height: 1.6; }
                </style>
            </head>
            <body>
                <h1>Sample PDF Document</h1>
                <p class='content'>This PDF was generated using IronPDF in ASP.NET Core.</p>
            </body>
            </html>";
        var pdf = renderer.RenderHtmlAsPdf(html);
        // Display PDF inline in browser
        Response.Headers.Add("Content-Disposition", "inline; filename=document.pdf");
        return File(pdf.BinaryData, "application/pdf");
    }
}
using IronPdf;
using Microsoft.AspNetCore.Mvc;

public class PdfController : Controller
{
    public IActionResult DisplayFromHtml()
    {
        var renderer = new ChromePdfRenderer();
        // Create PDF from HTML with CSS styling
        var html = @"
            <html>
            <head>
                <style>
                    body { font-family: Arial; padding: 20px; }
                    h1 { color: #2c3e50; }
                    .content { line-height: 1.6; }
                </style>
            </head>
            <body>
                <h1>Sample PDF Document</h1>
                <p class='content'>This PDF was generated using IronPDF in ASP.NET Core.</p>
            </body>
            </html>";
        var pdf = renderer.RenderHtmlAsPdf(html);
        // Display PDF inline in browser
        Response.Headers.Add("Content-Disposition", "inline; filename=document.pdf");
        return File(pdf.BinaryData, "application/pdf");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

在瀏覽器中查看輸出的 PDF 文件

如何在 ASP.NET Web 應用程式中使用 IronPDF 建立 PDF 檢視器:圖 1 - 與"如何在 ASP.NET Web 應用程式中使用 IronPDF 建立 PDF 檢視器"相關的 3 張圖片中的第 1 張

ChromePdfRenderer類別使用 Chromium 進行精確渲染,確保您的 CSS、JavaScript 和圖像能夠完全按照預期顯示。 將Content-Disposition設為 inline 會告訴瀏覽器直接顯示 PDF 文件,而不是下載它。

這樣就能創造無縫的檢視體驗,使用戶可以直接在您的網頁使用者介面中存取文件。 對於佈局複雜的文檔,通常可以在 HTML 中或使用RenderingOptions指定寬度和高度等渲染設定。

如需了解更多 HTML 轉換選項,請查看HTML 字串轉 PDF 指南

如何透過 URL 和 Razor 視圖渲染 PDF 檔案?

IronPDF也可以將即時網頁轉換為PDF文件。 這非常適合產生報告或存檔網頁內容:

public IActionResult RenderFromUrl(string url = "https://en.wikipedia.org/wiki/Main_Page")
{
    var renderer = new ChromePdfRenderer();
    renderer.RenderingOptions.EnableJavaScript = true;
    renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;
    var pdf = renderer.RenderUrlAsPdf(url);
    Response.Headers.Add("Content-Disposition", "inline; filename=webpage.pdf");
    return File(pdf.BinaryData, "application/pdf");
}
public IActionResult RenderFromUrl(string url = "https://en.wikipedia.org/wiki/Main_Page")
{
    var renderer = new ChromePdfRenderer();
    renderer.RenderingOptions.EnableJavaScript = true;
    renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;
    var pdf = renderer.RenderUrlAsPdf(url);
    Response.Headers.Add("Content-Disposition", "inline; filename=webpage.pdf");
    return File(pdf.BinaryData, "application/pdf");
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

瀏覽器文件檢視器顯示產生的 PDF

如何在 ASP.NET Web 應用程式中使用 IronPDF 建立 PDF 檢視器:圖 2 - 與"如何在 ASP.NET Web 應用程式中使用 IronPDF 建立 PDF 檢視器"相關的 3 張圖片中的第 2 張

要將 Razor 視圖轉換為 PDF,您需要一個輔助方法先將視圖渲染為 HTML。這種方法可讓您重複使用現有模板,用於 Web 顯示和 PDF 生成:

public async Task<IActionResult> ViewToPdf()
{
    var invoiceModel = new InvoiceModel
    {
        InvoiceNumber = 1001,
        InvoiceDate = DateTime.Now,
        CustomerName = "Acme Corp.",
        Items = new List<ItemModel>
        {
            new ItemModel { Description = "Product A", Quantity = 2, UnitPrice = 50.00m },
            new ItemModel { Description = "Service B", Quantity = 1, UnitPrice = 150.00m }
        }
    };
    invoiceModel.TotalAmount = invoiceModel.Items.Sum(i => i.LineTotal);
    // NOTE: RenderViewToStringAsync uses the Request services and ActionContext
    var htmlContent = await RenderViewToStringAsync("Invoice", invoiceModel);
    var renderer = new IronPdf.ChromePdfRenderer();
    var pdf = renderer.RenderHtmlAsPdf(htmlContent);
    return File(pdf.BinaryData, "application/pdf");
}
private async Task<string> RenderViewToStringAsync(string viewName, object model)
{
    // Use the current HttpContext's service provider (guaranteed available during a request)
    var actionContext = new ActionContext(HttpContext, RouteData, ControllerContext.ActionDescriptor);
    var viewEngine = HttpContext.RequestServices.GetRequiredService<IRazorViewEngine>();
    var tempDataFactory = HttpContext.RequestServices.GetRequiredService<ITempDataDictionaryFactory>();
    var tempData = tempDataFactory.GetTempData(HttpContext);
    ViewData.Model = model;
    var viewResult = viewEngine.FindView(actionContext, viewName, isMainPage: false);
    if (!viewResult.Success)
    {
        // Helpful error for debugging
        var searchedLocations = string.Join(Environment.NewLine, viewResult.SearchedLocations ?? Array.Empty<string>());
        throw new InvalidOperationException($"Couldn't find view '{viewName}'. Searched locations:{Environment.NewLine}{searchedLocations}");
    }
    await using var writer = new StringWriter();
    var viewContext = new ViewContext(
        actionContext,
        viewResult.View,
        ViewData,
        tempData,
        writer,
        new HtmlHelperOptions()
    );
    await viewResult.View.RenderAsync(viewContext);
    return writer.ToString();
}
public async Task<IActionResult> ViewToPdf()
{
    var invoiceModel = new InvoiceModel
    {
        InvoiceNumber = 1001,
        InvoiceDate = DateTime.Now,
        CustomerName = "Acme Corp.",
        Items = new List<ItemModel>
        {
            new ItemModel { Description = "Product A", Quantity = 2, UnitPrice = 50.00m },
            new ItemModel { Description = "Service B", Quantity = 1, UnitPrice = 150.00m }
        }
    };
    invoiceModel.TotalAmount = invoiceModel.Items.Sum(i => i.LineTotal);
    // NOTE: RenderViewToStringAsync uses the Request services and ActionContext
    var htmlContent = await RenderViewToStringAsync("Invoice", invoiceModel);
    var renderer = new IronPdf.ChromePdfRenderer();
    var pdf = renderer.RenderHtmlAsPdf(htmlContent);
    return File(pdf.BinaryData, "application/pdf");
}
private async Task<string> RenderViewToStringAsync(string viewName, object model)
{
    // Use the current HttpContext's service provider (guaranteed available during a request)
    var actionContext = new ActionContext(HttpContext, RouteData, ControllerContext.ActionDescriptor);
    var viewEngine = HttpContext.RequestServices.GetRequiredService<IRazorViewEngine>();
    var tempDataFactory = HttpContext.RequestServices.GetRequiredService<ITempDataDictionaryFactory>();
    var tempData = tempDataFactory.GetTempData(HttpContext);
    ViewData.Model = model;
    var viewResult = viewEngine.FindView(actionContext, viewName, isMainPage: false);
    if (!viewResult.Success)
    {
        // Helpful error for debugging
        var searchedLocations = string.Join(Environment.NewLine, viewResult.SearchedLocations ?? Array.Empty<string>());
        throw new InvalidOperationException($"Couldn't find view '{viewName}'. Searched locations:{Environment.NewLine}{searchedLocations}");
    }
    await using var writer = new StringWriter();
    var viewContext = new ViewContext(
        actionContext,
        viewResult.View,
        ViewData,
        tempData,
        writer,
        new HtmlHelperOptions()
    );
    await viewResult.View.RenderAsync(viewContext);
    return writer.ToString();
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

輸出查看的PDF

如何在 ASP.NET Web 應用程式中使用 IronPDF 建立 PDF 檢視器:圖 3 - PDF 在瀏覽器中渲染和檢視

此輔助方法可確保您有清晰的路徑將 Razor 視圖內容渲染為 HTML 字串,然後 IronPDF 可以對其進行轉換。 Razor 轉 PDF 教學詳細介紹了這個工作流程。

如何處理串流的大型PDF檔案?

處理大型 PDF 文件時,串流傳輸可提高效能並減少記憶體使用。 使用MemoryStream可以有效率地提供文件服務:

public IActionResult StreamLargePdf()
{
    var renderer = new ChromePdfRenderer();
    var pdf = renderer.RenderHtmlAsPdf("<h1>Large Document</h1><p>Content here...</p>");
    var stream = new MemoryStream(pdf.BinaryData);
    return new FileStreamResult(stream, "application/pdf");
}
public IActionResult StreamLargePdf()
{
    var renderer = new ChromePdfRenderer();
    var pdf = renderer.RenderHtmlAsPdf("<h1>Large Document</h1><p>Content here...</p>");
    var stream = new MemoryStream(pdf.BinaryData);
    return new FileStreamResult(stream, "application/pdf");
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

對於舊版 ASP.NET Web Forms 項目,您可以使用事件處理程序來實現類似的功能:

protected void btnGeneratePdf_Click(object sender, EventArgs e)
{
    var renderer = new ChromePdfRenderer();
    var pdf = renderer.RenderHtmlAsPdf("<h1>Web Form PDF</h1>");
    Response.ContentType = "application/pdf";
    Response.BinaryWrite(pdf.BinaryData);
    Response.End();
}
protected void btnGeneratePdf_Click(object sender, EventArgs e)
{
    var renderer = new ChromePdfRenderer();
    var pdf = renderer.RenderHtmlAsPdf("<h1>Web Form PDF</h1>");
    Response.ContentType = "application/pdf";
    Response.BinaryWrite(pdf.BinaryData);
    Response.End();
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

此PDF檢視器控制支援哪些功能?

透過利用瀏覽器的原生 PDF 檢視器,您的使用者可自動獲得豐富的功能:文字選擇以複製內容、搜尋功能以查找特定資料、列印選項以產生實體副本以及下載功能以離線存取。

這也適用於使用者需要上傳現有文件進行檢視、編輯或合併的情況。 IronPDF 的伺服器端處理功能包括 JavaScript 執行、CSS 渲染和表單(包含使用者可以填寫的互動式元素)。

該框架支援標籤助理整合、自訂頁面大小、頁首和頁尾、浮水印,甚至還支援編輯功能。 如需了解完整的功能概述,請瀏覽IronPDF 功能頁面

結論

使用 IronPDF 在 ASP.NET Web 應用程式中建立 PDF 檢視器非常簡單。 透過將強大的渲染引擎與瀏覽器的預設 PDF 檢視器結合,您可以獲得在 Web 應用程式中顯示、處理和管理 PDF 檔案的專業解決方案。 無論轉換的是 HTML、URL 還是 Razor 視圖,此實作方式只需編寫最少的程式碼即可提供最大的功能。

準備好在您的專案中實現 PDF 查看功能了嗎? 立即開始 IronPDF 的免費試用,改變您的 .NET Core Web 應用程式處理文件的方式。 對於生產環境部署,請查看符合您團隊需求的授權選項。 想了解更多 IronPDF 在轉換方面的優勢範例嗎? 了解 IronPDF 如何處理 DOCX 到 PDF 的轉換、影像到 PDF 的轉換等等,請參閱這些實用的操作指南

!{--01001100010010010100001001010010010000010101001001011001010111110100011101000101010101 01000101111101010011010101000100000101010010010101000100010101000100010111110101011101001000110 1010101000100100001011111010100000101001001001111010001000101010101010000110101010100101010101011 10101010001010010010010010010000010100110001011111010000100100110001001111101000011010010111111010000110100101110--

常見問題解答

如何在 ASP.NET Web 應用程式中建立 PDF 檢視器?

您可以使用 IronPDF 在 ASP.NET Web 應用程式中建立 PDF 檢視器。它可讓您直接在應用程式中顯示 PDF 文件,提供無縫的檢視體驗,而不需要 Adobe Acrobat Reader 等外部工具。

在 ASP.NET 中使用 IronPDF 檢視 PDF 有哪些好處?

IronPDF 在 ASP.NET 應用程式中提供流暢且整合的 PDF 檢視體驗。它允許您以內嵌方式顯示文件,支援各種檔案類型,而且不需要第三方 PDF 檢視器,提升了使用者體驗。

我可以在 ASP.NET Web 應用程式中顯示互動式 PDF 表單嗎?

是的,使用 IronPDF,您可以在 ASP.NET Web 應用程式中顯示互動式 PDF 表單。它支援表單欄位和互動元素的渲染,讓使用者可以直接在瀏覽器中與文件互動。

是否可以在 ASP.NET 中使用 IronPDF 展示發票和報表?

IronPDF 絕對適合在 ASP.NET 應用程式中顯示發票、報表和其他文件類型。它可以確保您的文件在 Web 應用程式中準確且有效率地呈現。

在使用 IronPDF 的 ASP.NET 應用程式中檢視 PDF 是否需要 Adobe Acrobat Reader?

不,使用 IronPDF for .NET 時,您不需要 Adobe Acrobat Reader 來在 ASP.NET 應用程式中檢視 PDF。它允許您直接在瀏覽器中渲染和檢視 PDF,而不需要第三方依賴。

Curtis Chau
技術作家

Curtis Chau 擁有卡爾頓大學計算機科學學士學位,專注於前端開發,擅長於 Node.js、TypeScript、JavaScript 和 React。Curtis 熱衷於創建直觀且美觀的用戶界面,喜歡使用現代框架並打造結構良好、視覺吸引人的手冊。

除了開發之外,Curtis 對物聯網 (IoT) 有著濃厚的興趣,探索將硬體和軟體結合的創新方式。在閒暇時間,他喜愛遊戲並構建 Discord 機器人,結合科技與創意的樂趣。