跳至頁尾內容
使用 IRONPDF

如何在 ASP.NET Core 中建立 PDF 檢視器:圖 1

若要在 ASP.NET Core 中實作 PDF 檢視器,可以使用 IronPDF 從HTMLURLRazor 視圖產生 PDF。 為它們提供合適的頭部信息,以便在瀏覽器中內聯顯示,無需外部插件或下載即可提供流暢的文檔查看體驗。

使用 .NET 建立 Web 應用程式通常需要直接在瀏覽器中顯示PDF 文件。 無論是發票報告互動式 PDF 表單,使用者都希望獲得流暢的文件檢視體驗,而無需 Adobe Acrobat Reader 或其他第三方瀏覽器工具。

在本教學中,您將學習如何使用IronPDF為 ASP.NET 和 .NET Core 實作 PDF 檢視器。 這款可靠的PDF 檢視器控制項可讓開發人員在其 .NET 應用程式中建立渲染和顯示 PDF 文件,為處理業務關鍵型文件提供專業的解決方案。

ASP.NET Core 中 PDF 檢視的工作原理是什麼?

現代瀏覽器都內建了PDF 檢視器。 當您使用正確的MIME 類型(application/pdf)提供 PDF 檔案時,瀏覽器會自動將其內嵌顯示。這意味著您無需外部外掛程式即可查看 PDF 文件或顯示 PDF 文件。 關鍵在於產生高品質的 PDF 檔案並配置正確的回應標頭

IronPDF 是一個經常更新的.NET PDF 庫,它擅長從HTMLRazor 視圖現有文件中建立像素級完美的PDF 頁面。 它基於 Chrome 的渲染確保了對CSSJavaScript圖像的精確支持,為用戶提供類似於桌面 PDF 檢視器的檢視體驗。

為什麼要先建立一個 ASP.NET Core 專案?

首先建立一個新的ASP.NET Core MVC 應用程式

dotnet new mvc -n PdfViewerApp
cd PdfViewerApp

這會建立一個支援 MVC 的基本 .NET 應用程式。 然後您可以安裝PDF 處理渲染所需的IronPDF NuGet 套件

如何安裝和配置 IronPDF?

安裝 IronPDF 只需幾個步驟。 在Visual Studio中開啟程式包管理器控制台並執行:

Install-Package IronPdf

或使用 .NET CLI:

dotnet add package IronPdf

在 Program.cs 或 Startup.cs 中設定 IronPDF:

// Add this at application startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"; // Use your trial or commercial key
// Add this at application startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"; // Use your trial or commercial key
$vbLabelText   $csharpLabel

安裝完成後,在 Program.cs 中設定您的許可證密鑰。 IronPDF 的文件提供了更多設定資訊和範例。 部署時,請確保使用適用於目標環境的正確安裝方法

如何產生可供檢視的PDF檔案?

IronPDF 讓您可以從原始HTML網頁Razor 視圖建立PDF 檔案。 然後,只需幾行 C# 原始程式碼即可將產生的PDF 文件內嵌顯示。 例如,使用ChromePdfRenderer ,您可以渲染 HTML並將其作為 PDF 文件傳回瀏覽器,該 PDF 檔案將顯示在您的 ASP.NET PDF 檢視器控制項中。

這種方法避免了強制下載,使用戶能夠直接在您的 Web 表單或Blazor 專案查看列印搜尋保存 PDF 檔案

如何從 HTML 字串建立 PDF?

最簡單的方法是將HTML直接轉換成PDF:

using IronPdf;
public class PdfController : Controller
{
    public IActionResult GenerateFromHtml()
    {
        var renderer = new ChromePdfRenderer();
        // Create PDF from HTML
        var html = @"
            <html>
            <head>
                <style>
                    body { font-family: Arial; padding: 20px; }
                    h1 { color: #333; }
                </style>
            </head>
            <body>
                <h1>Sample PDF Document</h1>
                <p>This PDF was generated using IronPDF in ASP.NET Core.</p>
            </body>
            </html>";
        var pdf = renderer.RenderHtmlAsPdf(html);
        // Return PDF to browser for viewing
        return File(pdf.BinaryData, "application/pdf");
    }
}
using IronPdf;
public class PdfController : Controller
{
    public IActionResult GenerateFromHtml()
    {
        var renderer = new ChromePdfRenderer();
        // Create PDF from HTML
        var html = @"
            <html>
            <head>
                <style>
                    body { font-family: Arial; padding: 20px; }
                    h1 { color: #333; }
                </style>
            </head>
            <body>
                <h1>Sample PDF Document</h1>
                <p>This PDF was generated using IronPDF in ASP.NET Core.</p>
            </body>
            </html>";
        var pdf = renderer.RenderHtmlAsPdf(html);
        // Return PDF to browser for viewing
        return File(pdf.BinaryData, "application/pdf");
    }
}
$vbLabelText   $csharpLabel

本範例展示如何直接從HTML 字串產生 PDF。 創建了一個ChromePdfRenderer ,它使用Chromium進行精確渲染。 將 HTML(包含內嵌 CSS )傳遞給RenderHtmlAsPdf ,產生PdfDocument 。 返回文件時使用 application/pdf MIME 類型可確保瀏覽器以內聯方式顯示該文件。這對於在ASP.NET Core中動態產生報表或發票非常有用。

何時應該從 URL 產生 PDF?

將現有網頁轉換為 PDF:

public IActionResult GenerateFromUrl(string url = "___PROTECTED_URL_133___")
{
    var renderer = new ChromePdfRenderer();
    renderer.RenderingOptions.EnableJavaScript = true;
    renderer.RenderingOptions.WaitFor.JavaScript(3000);
    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 GenerateFromUrl(string url = "___PROTECTED_URL_133___")
{
    var renderer = new ChromePdfRenderer();
    renderer.RenderingOptions.EnableJavaScript = true;
    renderer.RenderingOptions.WaitFor.JavaScript(3000);
    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");
}
$vbLabelText   $csharpLabel

IronPDF 將即時網頁轉換為 PDF 檔案。 RenderUrlAsPdf方法取得頁面,套用樣式腳本,並輸出精美的 PDF。 將Content-Disposition標頭設定為 inline 會使檔案在瀏覽器的 PDF 檢視器中開啟。 JavaScript渲染選項可確保動態內容正確載入。 這非常適合將網頁內容存檔或以PDF 文件形式共用。

輸出

! PDF 檢視器 Web 應用程序,顯示 IronPDF for .NET 文檔,頂部有"從 HTML 產生"、"從 URL 產生"和"列印"按鈕。

如何將 Razor 視圖轉換為 PDF?

動態地將Razor 視圖轉換為 PDF:

public async Task<IActionResult> ViewToPdf()
{
    // Render the view to HTML string first
    var htmlContent = await RenderViewToString("Invoice", invoiceModel);
    var renderer = new ChromePdfRenderer();
    var pdf = renderer.RenderHtmlAsPdf(htmlContent);
    return File(pdf.BinaryData, "application/pdf");
}
private async Task<string> RenderViewToString(string viewName, object model)
{
    ViewData.Model = model;
    using (var sw = new StringWriter())
    {
        var viewResult = ViewEngines.Engines.FindPartialView(ControllerContext, viewName);
        var viewContext = new ViewContext(ControllerContext, viewResult.View, ViewData, TempData, sw);
        viewResult.View.Render(viewContext, sw);
        return sw.ToString();
    }
}
public async Task<IActionResult> ViewToPdf()
{
    // Render the view to HTML string first
    var htmlContent = await RenderViewToString("Invoice", invoiceModel);
    var renderer = new ChromePdfRenderer();
    var pdf = renderer.RenderHtmlAsPdf(htmlContent);
    return File(pdf.BinaryData, "application/pdf");
}
private async Task<string> RenderViewToString(string viewName, object model)
{
    ViewData.Model = model;
    using (var sw = new StringWriter())
    {
        var viewResult = ViewEngines.Engines.FindPartialView(ControllerContext, viewName);
        var viewContext = new ViewContext(ControllerContext, viewResult.View, ViewData, TempData, sw);
        viewResult.View.Render(viewContext, sw);
        return sw.ToString();
    }
}
$vbLabelText   $csharpLabel

這段程式碼將Razor 視圖轉換為 PDF。 首先使用RenderViewToString將視圖渲染成 HTML 字串,然後使用RenderHtmlAsPdf進行轉換。 結果以瀏覽器可查看的文件形式傳回。這樣,您可以將Razor 範本(例如發票)重複用於網頁顯示和PDF 生成,從而確保一致性。 對於MVC 框架項目,類似的方法稍作調整即可適用。

如何在瀏覽器中顯示PDF檔案?

內嵌顯示 PDF 檔案(而不是下載)的關鍵在於設定正確的回應標頭。 現代瀏覽器在正確配置後支援內嵌PDF檢視

內嵌式顯示的基本方法是什麼?

public IActionResult ViewPdf()
{
    var renderer = new ChromePdfRenderer();
    var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>");
    Response.Headers.Add("Content-Disposition", "inline");
    return File(pdf.BinaryData, "application/pdf");
}
public IActionResult ViewPdf()
{
    var renderer = new ChromePdfRenderer();
    var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>");
    Response.Headers.Add("Content-Disposition", "inline");
    return File(pdf.BinaryData, "application/pdf");
}
$vbLabelText   $csharpLabel

此範例強制 PDF 檔案以內聯方式顯示,而不是下載。 使用RenderHtmlAsPdf將簡單的HTML 字串轉換為 PDF 文件,並將Content-Disposition標頭設為 inline。這是一種直接在瀏覽器中預覽生成的PDF 檔案的快捷方法。 您可以透過新增頁首、頁尾浮水印來改善這一點。

輸出

! PdfViewerApp 的螢幕截圖,顯示一個 PDF 檢視器,其中顯示"Hello World"文本,並帶有導航控制項和"從 HTML 產生"、"從 URL 產生"和"列印"等操作按鈕。

如何啟用動態PDF載入?

無需刷新頁面即可載入不同的PDF檔案:

[HttpGet]
public IActionResult GetPdfList()
{
    var pdfs = new List<object>
    {
        new { id = 1, name = "Report 1" },
        new { id = 2, name = "Report 2" }
    };
    return Json(pdfs);
}
[HttpGet]
public IActionResult GetPdf(int id)
{
    var renderer = new ChromePdfRenderer();
    var html = $"<h1>Report {id}</h1><p>Content for report {id}</p>";
    var pdf = renderer.RenderHtmlAsPdf(html);
    return File(pdf.BinaryData, "application/pdf");
}
// Load PDF dynamically
function loadPdf(pdfId) {
    const frame = document.getElementById('pdfFrame');
    frame.src = `/Pdf/GetPdf?id=${pdfId}`;
}
[HttpGet]
public IActionResult GetPdfList()
{
    var pdfs = new List<object>
    {
        new { id = 1, name = "Report 1" },
        new { id = 2, name = "Report 2" }
    };
    return Json(pdfs);
}
[HttpGet]
public IActionResult GetPdf(int id)
{
    var renderer = new ChromePdfRenderer();
    var html = $"<h1>Report {id}</h1><p>Content for report {id}</p>";
    var pdf = renderer.RenderHtmlAsPdf(html);
    return File(pdf.BinaryData, "application/pdf");
}
// Load PDF dynamically
function loadPdf(pdfId) {
    const frame = document.getElementById('pdfFrame');
    frame.src = `/Pdf/GetPdf?id=${pdfId}`;
}
$vbLabelText   $csharpLabel

這段程式碼可以動態地將不同的PDF檔案載入到檢視器中。 控制器提供 PDF 清單並按需產生這些 PDF 檔案。 JavaScript loadPdf 函數會更新<iframe>無需重新載入頁面即可取得來源文件,從而實現文件之間的快速切換。 考慮採用非同步方法來提高處理大型文件的效能。

如何實現進階查看功能?

透過添加更多功能來改進您的 PDF 檢視器:

public class AdvancedPdfController : Controller
{
    // Add zoom controls
    public IActionResult ViewWithZoom()
    {
        var renderer = new ChromePdfRenderer();
        renderer.RenderingOptions.ViewPortWidth = 1024;
        renderer.RenderingOptions.Zoom = 150; // 150% zoom
        var pdf = renderer.RenderHtmlAsPdf(htmlContent);
        return File(pdf.BinaryData, "application/pdf");
    }

    // Enable text search
    public IActionResult SearchablePdf()
    {
        var renderer = new ChromePdfRenderer();
        renderer.RenderingOptions.CreatePdfFormsFromHtml = true;
        var pdf = renderer.RenderHtmlAsPdf(htmlWithForms);
        // PDF text is searchable by default
        return File(pdf.BinaryData, "application/pdf");
    }
}
public class AdvancedPdfController : Controller
{
    // Add zoom controls
    public IActionResult ViewWithZoom()
    {
        var renderer = new ChromePdfRenderer();
        renderer.RenderingOptions.ViewPortWidth = 1024;
        renderer.RenderingOptions.Zoom = 150; // 150% zoom
        var pdf = renderer.RenderHtmlAsPdf(htmlContent);
        return File(pdf.BinaryData, "application/pdf");
    }

    // Enable text search
    public IActionResult SearchablePdf()
    {
        var renderer = new ChromePdfRenderer();
        renderer.RenderingOptions.CreatePdfFormsFromHtml = true;
        var pdf = renderer.RenderHtmlAsPdf(htmlWithForms);
        // PDF text is searchable by default
        return File(pdf.BinaryData, "application/pdf");
    }
}
$vbLabelText   $csharpLabel

這些範例演示了視口控制表單建立渲染選項可對 PDF 產生進行精細控制。 啟用文字擷取功能以用於搜尋功能,並啟用互動式文件的表單欄位

部署方面有哪些注意事項?

IronPDF 可跨ASP.NETASP.NET CoreBlazor Server專案運作。 您可以將其託管在伺服器上,部署到Azure ,或使用Docker進行容器化。 由於它是一個經常更新且有積極支持的庫,您可以依靠它進行專業的文檔處理。

如何部署到 Azure?

部署到Azure 應用程式服務時,IronPDF 可以無縫運行,只需極少的配置。 為了獲得最佳效能,請確保您的應用程式服務計劃至少為 B1 等級。 IronPDF 會自動處理Chrome 渲染引擎的部署。 請按此處查看有關選擇適當的 Azure 層的文件。 考慮使用Azure Functions進行無伺服器 PDF 產生。

Docker 支援情況如何?

對於容器化部署,IronPDF 提供Docker 支援。 將以下內容新增到您的 Dockerfile 中:

# Install IronPDF dependencies
RUN apt-get update && apt-get install -y libgdiplus

對於Linux 部署,可能需要額外的依賴項。 請查看安裝指南,以了解特定平台的要求。 考慮使用IronPDF Slim以減少容器大小。

什麼是關鍵績效指標?

如何排除常見問題?

為什麼您的PDF檔案無法內嵌顯示?

如果 PDF 文件下載而不是顯示:

// Ensure Content-Disposition is set correctly
Response.Headers.Add("Content-Disposition", "inline; filename=document.pdf");
// Ensure Content-Disposition is set correctly
Response.Headers.Add("Content-Disposition", "inline; filename=document.pdf");
$vbLabelText   $csharpLabel

檢查瀏覽器相容性並確保MIME 類型正確。 某些舊版瀏覽器可能需要額外配置

如何處理跨域問題?

從不同網域載入 PDF 檔案時:

// Add CORS headers if needed
Response.Headers.Add("Access-Control-Allow-Origin", "*");
// Add CORS headers if needed
Response.Headers.Add("Access-Control-Allow-Origin", "*");
$vbLabelText   $csharpLabel

對於安全環境,請正確設定 CORS 策略。 考慮受保護文件的身份驗證要求。

大型PDF檔怎麼辦?

對於大型文檔,請考慮串流

public async Task<IActionResult> StreamPdf()
{
    var renderer = new ChromePdfRenderer();
    var pdf = renderer.RenderHtmlAsPdf(largeHtmlContent);
    var stream = new MemoryStream(pdf.BinaryData);
    return new FileStreamResult(stream, "application/pdf");
}
public async Task<IActionResult> StreamPdf()
{
    var renderer = new ChromePdfRenderer();
    var pdf = renderer.RenderHtmlAsPdf(largeHtmlContent);
    var stream = new MemoryStream(pdf.BinaryData);
    return new FileStreamResult(stream, "application/pdf");
}
$vbLabelText   $csharpLabel

對超大型文件實現分頁功能。 使用壓縮技術來減少頻寬佔用。 考慮使用非同步渲染以提高效能。

下一步是什麼?

ASP.NET Core中建立 PDF 檢視器並不一定很複雜。 透過將IronPDF 的渲染引擎與瀏覽器的預設PDF 檢視器結合,您可以獲得一個專業且使用者友好的解決方案,用於線上顯示、編輯和處理 PDF 文件。無論您需要渲染發票、整合動態報表,還是為行動應用程式建立文件檢視器,此方法都能在功能、可擴充性和效能之間取得理想的平衡。

想找一份包含可運行原始程式碼的完整教學嗎? 下載我們的免費範例項目,了解 IronPDF 如何幫助您立即為 ASP.NET 整合現代、安全、靈活的PDF 檢視器。 請查看我們的API 參考文件以取得詳細文件和程式碼範例

準備好在 ASP.NET Core 應用程式中實作 PDF 檢視功能了嗎? 立即開始IronPDF 免費試用,提升您的 Web 應用程式的文件處理能力。

!{--01001100010010010100001001010010010000010101001001011001010111110100011101000101010101 01000101111101010011010101000100000101010010010101000100010101000100010111110101011101001000110 1010101000100100001011111010100000101001001001111010001000101010101010000110101010100101010101011 10101010001010010010010010010000010100110001011111010000100100110001001111101000011010010111111010000110100101110--

常見問題解答

在 ASP.NET 應用程式中顯示 PDF 文件的最佳方法是什麼?

使用 IronPDF,開發人員可以輕鬆地在 ASP.NET 應用程式的瀏覽器中直接渲染 PDF 文檔,從而提供無縫的使用者體驗,而無需 Adobe Acrobat Reader 等第三方工具。

IronPDF 能否用於增強 Web 應用程式中的 PDF 檢視功能?

是的,IronPDF旨在透過與Web應用程式的無縫整合來增強PDF檢視功能,確保使用者可以輕鬆且有效率地檢視PDF文件。

在 ASP.NET 中使用 IronPDF 時,我是否需要其他工具來檢視 PDF 檔案?

不,IronPDF 無需 Adobe Acrobat Reader 等其他工具,提供了一個內建解決方案,可以直接在 ASP.NET 應用程式中查看 PDF 文件。

如何在我的 .NET Web 應用程式中實作 PDF 檢視器?

透過將 IronPDF 整合到您的 .NET Web 應用程式中,您可以實現一個功能強大的 PDF 檢視器,該檢視器支援各種 PDF 功能並提供使用者友好的介面。

為什麼我應該在 ASP.NET 中使用 IronPDF 來查看 PDF 檔案?

IronPDF 為 ASP.NET 應用程式中的 PDF 檢視提供了一個可靠且有效率的解決方案,使開發人員能夠為使用者提供無縫體驗,而無需依賴外部插件。

是否可以使用 IronPDF 顯示互動式 PDF 表單?

是的,IronPDF 支援顯示互動式 PDF 表單,允許使用者直接在瀏覽器中填寫 PDF 文件並與之互動。

IronPDF 可以查看哪些類型的 PDF 文件?

IronPDF 可以處理各種類型的 PDF 文檔,包括發票、報告和互動式表單,使其成為任何 ASP.NET 應用程式的多功能工具。

IronPDF 是否支援 .NET 10 進行 PDF 產生和檢視?

是的。 IronPDF 完全支援 .NET 10,以及更早的版本,例如 .NET 9、8、7、6 和 .NET Core 和 .NET Framework。這表示您可以在現代的 .NET 10 ASP.NET 或 Blazor 應用程式中使用 IronPDF,在瀏覽器中產生、提供和顯示 PDF 檔案。 (ironpdf.com)

柯蒂斯·週
技術撰稿人

Curtis Chau擁有卡爾頓大學電腦科學學士學位,專長於前端開發,精通Node.js、TypeScript、JavaScript和React。他熱衷於打造直覺美觀的使用者介面,喜歡使用現代框架,並擅長撰寫結構清晰、視覺效果出色的使用者手冊。

除了開發工作之外,柯蒂斯對物聯網 (IoT) 也抱有濃厚的興趣,致力於探索硬體和軟體整合的創新方法。閒暇時,他喜歡玩遊戲和製作 Discord 機器人,將他對科技的熱愛與創造力結合。